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")
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.