>>> 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 ![]() 不要用原生的时间处理模块,用第三方的库。比较有名的是 arrow https://github.com/crsmithdev/arrow |
![]() | 2 neo1218 2017-03-09 18:32:50 +08:00 ![]() |
![]() | 3 rrfeng OP 感谢...看来看去还是 go 的比较舒服 |
4 billlee 2017-03-09 19:47:31 +08:00 ![]() 自己不看文档还怪 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 居然没有内置时间格式化的函数,还得自己手撸,这才惨呢 |