>>> dateutil.parser.parse("2017-03-09T09:32Z")
datetime.datetime(2017, 3, 9, 9, 32, tzinfo=tzutc())
>>> t1=dateutil.parser.parse("2017-03-09T09:32Z")
>>> t2=dateutil.parser.parse("2017-03-09T09:32Z").astimezone(dateutil.tz.tzstr("GMT+0800"))
>>> t1-t2
datetime.timedelta(0)
>>>
>>> t1
datetime.datetime(2017, 3, 9, 9, 32, tzinfo=tzutc())
>>> t2
datetime.datetime(2017, 3, 9, 17, 32, tzinfo=tzstr('GMT+0800'))
>>> t1-t2
datetime.timedelta(0)
>>> t2.strftime("%s")
'1489051920'
>>> t1.strftime("%s")
'1489023120'
>>>
为了方便小白理解?遇到好几个人觉得不同时区的时间戳不一样了……说不定是 Python 的锅
1
SpicyCat 2017-03-09 18:27:35 +08:00 1
不要用原生的时间处理模块,用第三方的库。比较有名的是 arrow
https://github.com/crsmithdev/arrow |
2
neo1218 2017-03-09 18:32:50 +08:00 1
|
3
rrfeng OP 感谢...看来看去还是 go 的比较舒服
|
4
billlee 2017-03-09 19:47:31 +08:00 1
自己不看文档还怪 python 咯?
datetime.datetime 传的参数是本地时间,输出 timestamp 是是要转换到 UTC 的,你指定的时区不同,转换到 UTC 后当然不一样。 parse 的时候 2017-03-09T09:32Z 里面的 Z 就是 0 区的意思,你拿两个相同的时间相减,当然是等于 0 了。 |
6
Muninn 2017-03-09 20:18:02 +08:00
go 的时间模块也被吐槽的不行啊
|
7
herozhang 2017-03-09 20:59:14 +08:00
推荐 pip install arrow
享受更好的时间处理 |
8
PythonAnswer 2017-03-09 21:08:09 +08:00 via Android
自带电池,只能让你享受一定程度的方便。(总比没电池好)
想更爽地使用,当然是插上电源,接通更人性化更现代的库, arrow, requests , jinja2 , lxml 。。。 难道你还用 urllib, str.format, etree ? |
9
laoyur 2017-03-09 21:08:20 +08:00
Python 渣表示,你贴出的示例,哪一条不好理解呢?我看着都没问题啊
最后一个 strftime ,你用的%s 小写 s 是啥意思呢, https://docs.python.org/2/library/datetime.html#strftime-and-strptime-behavior 官方文档中并没有小写 s 的 format |
12
zhihhh 2017-03-10 13:15:34 +08:00
说 go 比 python 自带电池爽我也是没明白。。
|
13
lalalakakaka 2017-03-12 14:40:15 +08:00
不错了,
我在用 python 写时间时也郁闷过,相似功能的库太多了,一点都不正交,也不 pythonic 结果偶尔去写了个 js ,发现 js 居然没有内置时间格式化的函数,还得自己手撸,这才惨呢 |