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

2017-09-05 11:49:39 +08:00
 chen2016

比如采集的时间格式: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 种方法,我是不满意的。不知道有没有更简便的方法?

3432 次点击
所在节点    Python
14 条回复
haddy
2017-09-05 12:12:35 +08:00
>>> 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-09-05 12:16:32 +08:00
python 文档里描述得不是特别清晰,实际上是可以用的
187j3x1
2017-09-05 12:17:51 +08:00
chen2016
2017-09-05 12:20:52 +08:00
@haddy #1 居然可以这样。我应该先试试的。谢谢啦
chen2016
2017-09-05 12:21:44 +08:00
@187j3x1 #3 不用自作聪明。我问之前肯定有搜文档
billgreen1
2017-09-05 13:07:59 +08:00
有的,使用 pandas 的 Timestamp

import pandas as pd

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

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

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

https://www.v2ex.com/t/388276

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

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

© 2021 V2EX