在python中有很多方法将datetime的字符串转换为 utc timestamp
网上找了好多,看起来都纷繁复杂。本文就想简单的做好一件事,就是将datetime的字符串转换为utc timestamp。
理解这个转换的关键,在于理解python中所有的日期字符串都被python解读为local time。
也就是说,同样是’2015/10/27 00:00:00’这个字符串,虽然身处东京的我和身在伦敦的你看到的是同一个字符串,但他们本身被python解读为两个不同地方的日期和时间。
如果想让python不去理会时差,而只想要utc格式的时间戳的话,用calendar.timegm()函数即可实现。
现举例如下:
# -*- coding: utf-8 -*- __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