from datetime import datetime, timezone, timedelta
import time
current_utc_time = datetime.utcnow().timestamp()
current_time = datetime.now().timestamp()
print(int(current_utc_time*1000))
print(datetime.fromtimestamp(current_utc_time))
print(datetime.utcfromtimestamp(current_utc_time))
print(int(current_time*1000))
print(datetime.fromtimestamp(current_time))
print(datetime.utcfromtimestamp(current_time))
结果是
1529353757477
2018-06-19 04:29:17.477108
2018-06-18 20:29:17.477108
1529382557477
2018-06-19 12:29:17.477108
2018-06-19 04:29:17.477108
但是我的认知中,timestamp是与时区无关, 应该是不会改变的
所以这个结果为什么两次输入的timestamp不一样
经过查找资料
一个datetime类型有一个时区属性tzinfo,但是默认为None,所以无法区分这个datetime到底是哪个时区,除非强行给datetime设置一个时区:
所以应该这么写
from datetime import datetime, timezone, timedelta
import time
current_utc_time = datetime.utcnow().replace(tzinfo=timezone.utc).timestamp()
current_time = datetime.now().timestamp()
print(int(current_utc_time*1000))
print(datetime.fromtimestamp(current_utc_time))
print(datetime.utcfromtimestamp(current_utc_time))
print(int(current_time*1000))
print(datetime.fromtimestamp(current_time))
print(datetime.utcfromtimestamp(current_time))
最后的结果是
1529382917895
2018-06-19 12:35:17.895815
2018-06-19 04:35:17.895815
1529382917895
2018-06-19 12:35:17.895815
2018-06-19 04:35:17.895815
网友评论