Как преобразовать тик .NET в дату и время python?

У меня есть файл с датами и временем, указанными в виде огромных чисел, таких как 634213557000000000. Я полагаю, что это галочка .NET. Это количество приращений в 100 наносекунд с полуночи 1 января 1 года нашей эры. Какой хороший способ прочитать это в python datetime?


person Judge Maygarden    schedule 06.10.2010    source источник
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
comment
Для совместимости с Python 3 вы можете использовать microseconds=ticks//10, чтобы избежать потери точности с плавающей запятой. - person jfs; 21.11.2015
comment
@jfs приносим извинения за то, что не ответили раньше, вы оставили свой комментарий более 5 лет назад! Согласно PEP 238, оператор // используется начиная с Python 2.2, так что нет веских причин не обновлять мой ответ вашим предложением. - person Mark Ransom; 18.06.2021