如何在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")