在python中有很多方法将datetime的字符串转换为 utc timestamp 网上找了好多,看起来都纷繁复杂。本文就想简单的做好一件事,就是将datetime的字符串转换为utc timestamp。 理解这个转换的关键,在于理解python中所有的日期字符串都被python解读为local time。 也就是说,同样是’2015/10/27 00:00:00’这个字符串,虽然身处东京的我和身在伦敦的你看到的是同一个字符串,但他们本身被python解读为两个不同地方的日期和时间。 如果想让python不去理会时差,而只想要utc格式的时间戳的话,用calendar.timegm()函数即可实现。 现举例如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| \ \_\_author\_\_ = 'leo'
from datetime import datetime import calendar import time
def local\_to\_utc(date_value): utc\_timetuple = datetime.strptime(date\_value, '%Y/%m/%d %H:%M:%S').timetuple() ts = calendar.timegm(utc_timetuple) return ts * 1000
def local\_timestamp(date\_value): utc\_timetuple = datetime.strptime(date\_value, '%Y/%m/%d %H:%M:%S').timetuple() ts = time.mktime(utc_timetuple) return int(ts) * 1000
date_str = '2015/10/27 00:00:00' print local\_to\_utc(date_str) print local\_timestamp(date\_str)
|
最后打印的结果,可以看到两个函数输出的时间戳是不一样的。(P.S.笔者在东九区)
1445904000000
1445871600000