0%

在Python中将datetime字符串转换为utc timestamp

在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
\# -*- 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