Python Datetime раунд timedelta до ближайшего большого блока - PullRequest
0 голосов
/ 26 июня 2018

Я делаю форум как учебный опыт. У меня есть метка времени для каждого поста, которую я конвертирую в таймдельту (сколько времени назад это было). Я хочу вывести время так:

If it's    <     1 minute                       display it in seconds
If it's    >=    1 minute   and    < 1 hour     display it in minutes
If it's    >=    1 hour     and    < 1 day      display it in hours
If it's    >=    1 day      and    < 1 week     display it in days
If it's    >=    1 week     and    < 1 month    display it in weeks
If it's    >=    1 month    and    < 1 year     display it in months
If it's    >=    1 year                         display it in years

Каков наилучший способ сделать это в python и datetime?

1 Ответ

0 голосов
/ 26 июня 2018

Использовать стороннюю библиотеку. Например, readabledelta - это подкласс timedelta, который печатает текст, читаемый человеком.

>>> from readabledelta import readabledelta
>>> from datetime import timedelta
>>> print(readabledelta(timedelta(seconds=1)))
1 second
>>> print(readabledelta(timedelta(seconds=60)))
1 minute
>>> print(readabledelta(timedelta(seconds=60*60)))
1 hour
>>> print(readabledelta(timedelta(seconds=60*60*24)))
1 day
>>> print(readabledelta(timedelta(seconds=60*60*24*7)))
1 week

Вы не можете легко использовать месяцы или годы, потому что длина единицы не определена четко (месяц может составлять 28-31 день, а год может составлять 365-366 дней).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...