2016-10-11 6 views
1

Как можно преобразовать порядковый номер даты, представляющий число дней с эпохи (1970), в соответствующую строку даты? Я видел несколько сообщений, показывающих, как перейти от номера строки к дате, но я не смог найти никаких сообщений о том, как сделать обратное.Преобразование дней с эпохи на сегодняшний день

Например, 15951 соответствует "2013-09-02".

>>> import datetime 
>>> (datetime.datetime(2013, 9, 2) - datetime.datetime(1970,1,1)).days + 1 
15951 

(+ 1 потому что независимо генерироваться эти цифры даты следовали конвенции, что Ян 1, 1970 = 1.)

TL; DR: Ищете что-то сделать следующее:

>>> serial_date_to_string(15951) # arg is number of days since 1970 
"2013-09-02" 

Это отличное от Python: Converting Epoch time into the datetime, потому что я начинаю с дней с 1970 года. Я не уверен, что вы можете просто умножить на 86 400 из-за прыжковых секунд и т. Д.

+0

Я также открыт для решения Баш скрипт оболочки. – pault

+0

Возможный дубликат [Python: преобразование времени Epoch в datetime] (http://stackoverflow.com/questions/12400256/python-converting-epoch-time-into-the-datetime) – Batsu

+3

Использование: 'datetime.datetime (1970) , 1, 1, 0, 0) + datetime.timedelta (15951) ' – sisanared

ответ

4

Используйте datetime пакет следующим образом:

import datetime 
def serial_date_to_string(srl_no): 
    new_date = datetime.datetime(1970,1,1,0,0) + datetime.timedelta(srl_no - 1) 
    return new_date.strftime("%Y-%m-%d") 

Это функция, которая возвращает строку, как требуется.

Итак:

serial_date_to_string(15951) 

Возвращает

>> "2013-09-02"