如何在Python中获取UTC时间?

我已经在StackExchange上search了一堆解决scheme,但没有什么是我需要的。 在JavaScript中,我使用以下来计算1970年1月1日以来的UTC时间:

function UtcNow() { var now = new Date(); var utc = Date.UTC(now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate(), now.getUTCHours(), now.getUTCMinutes(), now.getUTCSeconds(), now.getUTCMilliseconds()); return utc; } 

什么是等效的Python代码?

试试这个使用datetime.utcnow()的代码:

 from datetime import datetime datetime.utcnow() 

为了您的目的,当您需要计算在两个date之间花费的时间量时,您需要的是减去结束date和开始date。 这种减法的结果是一个timedelta对象。

从python文档:

 class datetime.timedelta([days[, seconds[, microseconds[, milliseconds[, minutes[, hours[, weeks]]]]]]]) 

这意味着默认情况下,您可以获取定义中提到的任何字段 – 天,秒,微秒,毫秒,分钟,小时,星期。 另外timedelta实例有total_seconds()方法:

返回持续时间中包含的总秒数。 等于(td.microseconds +(td.seconds + td.days * 24 * 3600)* 10 * 6)/ 10 * 6计算真正的划分启用。

在最接近你的原始forms:

 import datetime def UtcNow(): now = datetime.datetime.utcnow() return now 

如果您需要知道从1970-01-01开始的秒数而不是本地Python datetime ,请改为使用它:

 return (now - datetime.datetime(1970, 1, 1)).total_seconds() 

Python的命名约定与Javascript中可能使用的约定不一致,请参阅PEP 8 。 而且,一个简单地返回另一个函数结果的函数是相当愚蠢的; 如果只是使其更容易访问,则可以通过简单分配来为函数创build另一个名称。 上面的第一个例子可以replace为:

 utc_now = datetime.datetime.utcnow 

从datetime.datetime中,您可以使用方法strftime导出时间戳。 遵循你的function例子:

 import datetime def UtcNow(): now = datetime.datetime.utcnow() return int(now.strftime("%s")) 

如果你想微秒,你需要改变输出string,并像下面这样float:float return int(now.strftime("%s.%f")