У меня есть файл с датами и временем, указанными в виде огромных чисел, таких как 634213557000000000. Я полагаю, что это галочка .NET. Это количество приращений в 100 наносекунд с полуночи 1 января 1 года нашей эры. Какой хороший способ прочитать это в python datetime?
Как преобразовать тик .NET в дату и время python?
comment
Я думаю, что вы неправильно используете термин эпоха. Эпоха — это не число — это основа, от которой отсчитываются числа. Таким образом, эпоха значений .NET DateTime — 1 января 1 года нашей эры. Во многих других системах (возможно, включая Python) это 1 января 1970 года нашей эры.
- person Jon Skeet   schedule 06.10.2010
comment
Я был в процессе изменения этого, чтобы поставить галочку, когда вы сделали этот комментарий.
- person Judge Maygarden   schedule 06.10.2010
comment
Вау, на вопросы с .NET в названии отвечают очень быстро!
- person Judge Maygarden   schedule 06.10.2010
comment
Ах! они были галочками и устарели мой ответ
- person pyfunc   schedule 06.10.2010
comment
@pyfunc Да, как также указал @Jon, я изначально неправильно обозначил их как «эпохи», когда задал этот вопрос вместе. Я сожалею о том, что.
- person Judge Maygarden   schedule 06.10.2010
Ответы (1)
datetime.datetime(1, 1, 1) + datetime.timedelta(microseconds = ticks//10)
Для вашего примера это возвращает
datetime.datetime(2010, 9, 29, 11, 15)
person
Mark Ransom
schedule
06.10.2010
Для совместимости с Python 3 вы можете использовать
microseconds=ticks//10
, чтобы избежать потери точности с плавающей запятой.
- person jfs; 21.11.2015
@jfs приносим извинения за то, что не ответили раньше, вы оставили свой комментарий более 5 лет назад! Согласно PEP 238, оператор
//
используется начиная с Python 2.2, так что нет веских причин не обновлять мой ответ вашим предложением.
- person Mark Ransom; 18.06.2021