Python 提供了不同的包(datetime
, time
, calendar
),可以在此处看到以处理时间。我犯了一个大错误,使用以下方法获取当前的 GMT 时间time.mktime(datetime.datetime.utcnow().timetuple())
在 Unix 时间戳中获取当前 GMT 时间的简单方法是什么?
Python 提供了不同的包(datetime
, time
, calendar
),可以在此处看到以处理时间。我犯了一个大错误,使用以下方法获取当前的 GMT 时间time.mktime(datetime.datetime.utcnow().timetuple())
在 Unix 时间戳中获取当前 GMT 时间的简单方法是什么?
我会使用 time.time() 来获取自纪元以来以秒为单位的时间戳。
import time
time.time()
输出:
1369550494.884832
对于大多数平台上的标准 CPython 实现,这将返回一个 UTC 值。
import time
int(time.time())
输出:
1521462189
这有帮助吗?
from datetime import datetime
import calendar
d = datetime.utcnow()
unixtime = calendar.timegm(d.utctimetuple())
print unixtime
python2和python3
使用时间模块很好
import time
int(time.time())
1573708436
您也可以使用 datetime 模块,但是当您使用 strftime('%s') 时,strftime 会将时间转换为本地时间!
蟒蛇2
from datetime import datetime
datetime.utcnow().strftime('%s')
蟒蛇3
from datetime import datetime
datetime.utcnow().timestamp()
Python 3 秒,微秒十进制分辨率:
from datetime import datetime
print(datetime.now().timestamp())
Python 3 整数秒:
print(int(datetime.now().timestamp()))
datetime.utcnow().timestamp()
!datetime.utcnow()
是一个非时区感知对象。请参阅参考:https ://docs.python.org/3/library/datetime.html#aware-and-naive-objects
对于像 UTC 凌晨 1 点这样的事情:
from datetime import timezone
print(datetime(1970,1,1,1,0,tzinfo=timezone.utc).timestamp())
或者
print(datetime.fromisoformat('1970-01-01T01:00:00+00:00').timestamp())
如果您删除tzinfo=timezone.utc
or +00:00
,您将获得取决于您当前当地时间的结果。例如:您当前时区的 1970 年 1 月 1 日凌晨 1 点 - 这可能是合法的 - 例如,如果您想要出生时的时间戳,则应该使用您出生时所在的时区。但是,时间戳datetime.utcnow().timestamp()
两者都不是当地时间或 UTC 的当前时刻。例如,我现在在 GMT-7:00,并datetime.utcnow().timestamp()
给出未来 7 小时的时间戳!
或者只是简单地使用 datetime 标准模块
In [2]: from datetime import timezone, datetime
...: int(datetime.now(tz=timezone.utc).timestamp() * 1000)
...:
Out[2]: 1514901741720
您可以根据所需的分辨率截断或相乘。这个例子是输出毫秒。
如果您想要一个正确的Unix时间戳(以秒为单位),请删除* 1000
至少在 python3 中,这是有效的:
>>> datetime.strftime(datetime.utcnow(), "%s")
'1587503279'
我喜欢这种方法:
import datetime, time
dts = datetime.datetime.utcnow()
epochtime = round(time.mktime(dts.timetuple()) + dts.microsecond/1e6)
此处发布的其他方法要么不保证在所有平台上为您提供 UTC,要么只报告整秒。如果你想要全分辨率,这可以工作到微秒。
#First Example:
from datetime import datetime, timezone
timstamp1 =int(datetime.now(tz=timezone.utc).timestamp() * 1000)
print(timstamp1)
输出:1572878043380
#second example:
import time
timstamp2 =int(time.time())
print(timstamp2)
输出:1572878043
from datetime import datetime as dt
dt.utcnow().strftime("%s")
输出:
1544524990