Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python日期时间到微时间_Python_Datetime_Epoch - Fatal编程技术网

Python日期时间到微时间

Python日期时间到微时间,python,datetime,epoch,Python,Datetime,Epoch,我环顾四周,似乎有很多黑客,但没有简单的“好”方法来做到这一点。我想将Pythondatetime对象转换为microtime,比如time.time()返回值(秒.微秒) 最好的方法是什么?使用mktime()完全去除微秒,您可以想象建立timedelta,但这似乎不正确。您还可以使用浮点(strftime(“%s.%f”)(正确地计算舍入秒数),但这似乎是一个超级黑客 “正确”的方法是什么 def microtime(dt): unixtime = dt - datetime.dat

我环顾四周,似乎有很多黑客,但没有简单的“好”方法来做到这一点。我想将Python
datetime
对象转换为microtime,比如
time.time()
返回值(秒.微秒)

最好的方法是什么?使用
mktime()
完全去除微秒,您可以想象建立
timedelta
,但这似乎不正确。您还可以使用
浮点(strftime(“%s.%f”)
(正确地计算舍入秒数),但这似乎是一个超级黑客

“正确”的方法是什么

def microtime(dt):
    unixtime = dt - datetime.datetime(1970, 1, 1)
    return unixtime.days*24*60*60 + unixtime.seconds + unixtime.microseconds/1000000.0
如果您不想使用
strftime
float
,则可以使用

它返回与
time.time()
相同的内容,其中
dt=datetime.datetime.now()
导入时间

microtime=int(time.time()*1000)


打印微时间

这与
datetime.datetime.now()的
time.time()
不同。看起来您假设的是
dt
是UTC,因此您将被时区的UTC偏移量关闭。@agf,什么是
time.time()
?我在文档中找不到它:不是
datetime.time
time.time()
——@agf:“应该有一种——最好只有一种——显而易见的方法来做。”我以前从来都不知道
time
。你是对的,我的解决方案假设你正在传递UTC日期时间。我同意这是一个混乱。在编写PyFeed时,我编写了自己的函数来处理它。如果datetime对象的时区和您的本地时区可能不相同,您应该使用calendar.gmtime(dt.utctimetuple())而不是我认为您的意思是
calendar.timegm
,这给出了与Mark版本相同的答案——这意味着它对于非UTC
datetime
对象是不正确的。对于我来说,从历元开始的时间与UTC中的某个人的时间相同,与我的UTC偏移量无关。无论您的时区如何,它总是正确的,因为dt.utctimetuple返回UTC中datetime对象的时间元组。calendar.timegm接受utc时间元组。您尝试过吗
time.time()
calendar.timegm(datetime.datetime.now().utctimetuple())
对于非UTC时区,不要给出自纪元以来相同的时间,而无论您谈论的是哪个时区,自纪元以来经过的时间都是相同的,因为纪元是UTC并且
time.time()
以UTC返回时间。我明白了。我正在我的网站上使用calendar.timegm。它工作得很好,因为我的datetime对象携带tzinfo。datetime.datetime.now()返回的datetime对象似乎不包含tzinfo,因此utctimetuple不会返回正确的结果(在缺少tzinfo的情况下,utctimetuple会返回与timetuple相同的结果),为什么语句后面会有分号?
time.mktime(dt.timetuple()) + dt.microsecond / 1000000.0