2015-03-31 3 views
4

Я хотел бы получить эквивалент python timestamp.Ticks(), однако мне нужно, чтобы он исходил из даты и времени python, а не объекта времени.Что такое эквивалент python системы C# .datetime.Ticks()?

Это не эквивалент Get timer ticks in Python, который спрашивает, «как я могу получить количество тиков с полуночи?».

Я спрашиваю, как получить количество тиков данного времени и времени. Клещи Я имею в виду system.datetime.ticks:

https://msdn.microsoft.com/en-us/library/system.datetime.ticks%28v=vs.110%29.aspx

По «получить эквивалент» я имею в виду, что это код питона, который будет давать эквивалентный выход C# код? ».

+1

возможно дубликат [Получить тактах таймера в Python] (http://stackoverflow.com/questions/156330/get-timer-ticks-in-python) – Sayse

+0

Что такое 'timestamp.Ticks()'? –

+0

Почему вы думаете, что там должен быть точный эквивалент? Языки программирования - это разные стили разных целей. Они не включают в себя эквивалентные методы, функции, структуры данных и т. Д. –

ответ

8

В соответствии с ссылочной страницей DateTime.Ticks возвращает количество тиков с 0001:01:01 00:00:00. Есть 10 миллионов клещей в секунду.

В Python, datetime(1, 1, 1) представляет 0001-01-01 00:00:00. Вы можете рассчитать количество секунд, используя метод total_seconds()timedelta. Затем дали datetime объект, дельта вычисляется и преобразуется в клещах следующим образом:

from datetime import datetime 

t0 = datetime(1, 1, 1) 
now = datetime.utcnow() 
seconds = (now - t0).total_seconds() 
ticks = seconds * 10**7 

В функции это:

def ticks(dt): 
    return (dt - datetime(1, 1, 1)).total_seconds() * 10000000 

>>> t = ticks(datetime.utcnow()) 
>>> t 
6.356340009927151e+17 
>>> long(t) 
635634000992715136L 

Это значение выгодно отличается от той, что возвращает C# с использованием DateTime.UtcNow.Ticks.

Примечания:

  • UTC времена принято считать.
  • Разрешение datetime объекта задается datetime.resolution, который является datetime.timedelta(0, 0, 1) или разрешение микросекунд (1e-06 секунд). C# Клещи считаются 1е-07 секунд.
Смежные вопросы