Mycroft-core: La sortie mycroft.format.nice_duration() est gênante sur de longues périodes

Créé le 10 sept. 2019  ·  8Commentaires  ·  Source: MycroftAI/mycroft-core

Par exemple, en utilisant nice_duration pour vérifier combien de temps il s'est écoulé depuis qu'un datetime début juillet 2016 a produit " onze soixante six jours cinq heures une seconde ".

Si vous posez simplement cette question à Mycroft, elle passe à Wolfram, qui produit la sortie souhaitée. Je me rends compte que c'est une tâche cauchemardesque d'essayer d'aborder des jours à des années, étant donné les années bissextiles et tout, mais je pense qu'il devrait au moins passer à des centaines : « onze cent soixante six jours... » (ou « mille cent soixante six journées")

help wanted

Tous les 8 commentaires

Merci d'avoir signalé cela :)

Si quelqu'un souhaite s'y attaquer et souhaite gérer les années bissextiles, j'ai récemment utilisé ce qui suit dans la compétence Date-Heure :

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

Il y a aussi la fonction calendar.isleap dans la bibliothèque standard...

Le module humanize pourrait être quelque chose à regarder aussi...

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

Si quelqu'un va refactoriser cette fonction, cela peut valoir la peine de donner une résolution à l'objet pendant qu'il est là-dedans. C'est amusant et à 100% dans le caractère pour Mycroft de vous dire combien de secondes se sont écoulées depuis ce jour il y a longtemps, mais les codeurs pourraient préférer spécifier, nice_duration_years() ou nice_duration(dt1, dt2, <str>resolution)

Oui, j'ai pensé à la "résolution" pour un certain nombre de ces fonctions, mais je ne veux pas faire de changements de rupture. On dirait que cela pourrait être moins un problème ici si nous ajoutons uniquement un paramètre facultatif et qu'il ne renvoie toujours qu'une chaîne, par exemple :
nice_duration(<int>seconds, <str>resolution)

Parce que je ne code pas ça moi-même, je vais faire mille suggestions !

Si ces fonctions obtiennent une résolution, peut-être que les années pourraient fonctionner sur des trimestres, ou considérer combien de mois ou etc. font la différence entre "environ 2 ans", "presque 2 ans", "un peu plus de 2 ans" ou simplement "2 ans"

J'ai juste commencé à m'embêter avec ça dans l'interprète, et je ne pense pas que ce sera aussi difficile que je le pensais. Si personne d'autre n'a encore commencé, je le ferai après le dîner.

Correction fusionnée.

Cette page vous a été utile?
0 / 5 - 0 notes