Mycroft-core: A saída de mycroft.format.nice_duration () fica estranha por longos períodos

Criado em 10 set. 2019  ·  8Comentários  ·  Fonte: MycroftAI/mycroft-core

Por exemplo, usando nice_duration para verificar quanto tempo se passou desde que um datetime no início de julho de 2016 produziu, "onze sessenta e seis dias cinco horas um segundo."

Se você apenas fizer essa pergunta a Mycroft, ele passa para o Wolfram, que produz a saída desejada. Eu percebo que é uma tarefa de pesadelo tentar lidar com dias a anos, dados anos bissextos e tudo, mas eu acho que deveria se mover pelo menos para centenas: "onze cem sessenta e seis dias ..." (ou "mil cento e sessenta e seis dias")

help wanted

Todos 8 comentários

Obrigado por relatar isso :)

Se alguém estiver interessado em lidar com isso e quiser lidar com anos bissextos, usei o seguinte na Habilidade de data e hora recentemente:

def is_leap_year(self, year):
    return (year % 400 == 0) or ((year % 4 == 0) and (year % 100 != 0))

Há também a função calendar.isleap na biblioteca padrão ...

O módulo humanizar pode ser algo para se olhar também ...

>>> humanize.naturaldelta(timedelta(minutes=40, hours=360000))
'41 years'

Se alguém _está_ refatorando esta função, pode valer a pena dar a resolução da coisa enquanto eles estão lá. É divertido e 100% característico para Mycroft dizer a você quantos segundos se passaram desde aquele dia, há muito tempo, mas os programadores podem preferir especificar, nice_duration_years() ou nice_duration(dt1, dt2, <str>resolution)

Sim, estive pensando sobre a "resolução" de várias dessas funções, mas não quero fazer alterações significativas. Parece que isso não seria um problema aqui se apenas adicionarmos um parâmetro opcional e ele ainda retornar apenas uma string, por exemplo:
nice_duration(<int>seconds, <str>resolution)

Como não estou codificando isso sozinho, farei mil sugestões!

Se essas funções obtiverem resolução, talvez anos possam operar em trimestres, ou considere quantos meses ou etc. fazem a diferença entre "cerca de 2 anos", "quase 2 anos", "um pouco mais de 2 anos" ou apenas "2 anos"

Acabei de começar a me preocupar com isso no intérprete e não acho que será tão difícil quanto pensei. Se ninguém mais começou ainda, farei isso depois do jantar.

Corrigir mesclado.

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

Ahmed-Benj picture Ahmed-Benj  ·  7Comentários

krisgesling picture krisgesling  ·  3Comentários

akhiljns picture akhiljns  ·  5Comentários

beemorris picture beemorris  ·  6Comentários

InconsolableCellist picture InconsolableCellist  ·  8Comentários