2011-08-30 4 views
5

나는 주변을 둘러 보았고 많은 해킹이있는 것처럼 보였지만 단순하고 "좋은"방법이 없었다. 나는 파이썬 datetime 객체를 time.time()이 반환하는 초 (seconds.microseconds)와 같이 미세 시간으로 변환하려고합니다.마이크로 시간에 파이썬 datetime

이 작업을 수행하는 가장 좋은 방법은 무엇입니까? mktime()을 사용하면 마이크로 초를 모두 없애기 때문에 timedelta을 생성 할 수는 있지만 그럴 것 같지 않습니다. float(strftime("%s.%f")) (제대로 반올림하는 데 사용)을 사용할 수도 있지만 슈퍼 해킹처럼 보입니다.

"올바른"방법은 무엇입니까?

답변

6
time.mktime(dt.timetuple()) + dt.microsecond/1000000.0 

작품 당신은 strftimefloat을 사용하지 않으려는 경우.

dt = datetime.datetime.now()으로 time.time()과 동일한 것을 반환합니다.

+0

datetime 개체의 시간대와 현지 시간대가 같지 않을 경우 대신 calendar.gmtime (dt.utctimetuple())을 사용해야합니다 –

+0

'calendar.timegm'을 의미하고, 이는 Mark의 버전과 같은 대답을합니다. 즉, UTC가 아닌'datetime' 객체에 대해서는 올바르지 않습니다. 나를위한 신기원 이후의 시간은 UTC의 누군가와 동일합니다. UTC 오프셋과 다른 것은 아닙니다. – agf

+0

dt.utctimetuple은 datetime 객체의 시간 튜플을 UTC로 반환하므로 시간대에 관계없이 항상 정확합니다. 그리고 calendar.timegm은 utc timetuple을 사용합니다. –

2
def microtime(dt): 
    unixtime = dt - datetime.datetime(1970, 1, 1) 
    return unixtime.days*24*60*60 + unixtime.seconds + unixtime.microseconds/1000000.0 
+0

이것은'datetime.datetime.now()'의'time.time()'과 똑같지 않습니다. 'dt '가 UTC라고 가정하는 것처럼 보이므로 시간대의 UTC 오프셋을 벗어납니다. – agf

+0

@agf,'time.time()은 무엇입니까? 설명서에서 찾을 수 없습니다 : http://docs.python.org/library/datetime.html –

+0

'datetime.time','time.time()'- http : //docs.python이 아닙니다. org/library/time.html # time.time – agf

관련 문제