非标准时间格式( 2017-9-5 12:00:00)怎么处理成标准时间?

2017 年 9 月 5 日
 jko123

比如采集的时间格式:2017-9-5 12:00:00,对于这种非标准的时间怎么处理成标准时间格式?

  1. 直接 datetime 包处理?好像不行,因为%m 对应的是 01-12,%d 对应 01-31
  2. 对这种时间先拆分再处理拼接?好像可以,不过麻烦点。比如:
ftime='2017-9-5 12:00:00'
date,time=ftime.split(' ')
year,month,day=date.split('-')
if len(month)==1:
    month='0'+month
if len(day)==1:
    day='0'+day
ftime2='-'.join([year,month,day])+' '+time

对于第 2 种方法,我是不满意的。不知道有没有更简便的方法?

4048 次点击
所在节点    Python
14 条回复
haddy
2017 年 9 月 5 日
>>> datetime.datetime.strptime("2017-9-5 12:30:45", "%Y-%m-%d %H:%M:%S")
datetime.datetime(2017, 9, 5, 12, 30, 45)
haddy
2017 年 9 月 5 日
python 文档里描述得不是特别清晰,实际上是可以用的
187j3x1
2017 年 9 月 5 日
jko123
2017 年 9 月 5 日
@haddy #1 居然可以这样。我应该先试试的。谢谢啦
jko123
2017 年 9 月 5 日
@187j3x1 #3 不用自作聪明。我问之前肯定有搜文档
billgreen1
2017 年 9 月 5 日
有的,使用 pandas 的 Timestamp

import pandas as pd

pd.Timestamp("2017-9-5 13:05")

你会的到你想要的
qiayue
2017 年 9 月 5 日
果然还是 PHP 最好
date('Y-m-d H:i:s', strtotime('2017-9-5 12:00:00'))
jko123
2017 年 9 月 5 日
@billgreen1 #6 一楼已经解决了。datetime 也可以处理
billgreen1
2017 年 9 月 5 日
@chen2016 一楼的解决方案需要你指定格式,我给出的这个,你不需要指定格式的。哪怕你用 2017/9/5 它也能正确识别
Martin9
2017 年 9 月 5 日
现在 v 站越来越多三楼这种人
block 了
jko123
2017 年 9 月 5 日
@billgreen1 #9 啊!厉害了,谢谢
Les1ie
2017 年 9 月 5 日
```
$ pip install arrow
```
放弃 date 和 time 转到 arrow 吧...
Les1ie
2017 年 9 月 5 日
突然发现 arrow.get()也拿不到这句话..
sivacohan
2017 年 9 月 5 日
这种情况,除了 @haddy 的说明。还有几个库。
Python-dateutil
pytz
arrow

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://v2ex.xtra.eu.org/t/388276

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX