如何在Python中将字符串'Y-m-d h-m-s'转换为时间结构'Y-m-d'

时间:2020-08-08 20:18:10

标签: python

我在json文件中有以下日期,看起来像这样

dataset = [{'date': '2017-01-27 21:56:57'}]

如何将其转换为timeStruct,以便它只给我'2017-01-27'?

使用以下代码...

import json
import time

for d in dataset:
    d['timeStruct'] = time.strptime(d['date'], '%Y-%m-%d')

...给我一个错误ValueError: unconverted data remains: 05:21:16

有没有一种方法可以转换为Y-m-d而不会减少小时,分钟和秒的一部分?在SQL中,它会根据'%Y-%m-%d'

自动进行转换

3 个答案:

答案 0 :(得分:2)

感谢@Peter Wood,答案得到了改善。

您可以使用'{:%Y-%m-%d}'.format(t)

from datetime import datetime

if __name__ == '__main__':
    dataset = [{'date': '2017-01-27 21:56:57'}]
    for d in dataset:
        d['timeStruct'] = '{:%Y-%m-%d}'.format(datetime.strptime(d['date'], '%Y-%m-%d %H:%M:%S'))

t变量:

2017-1-27

答案 1 :(得分:1)

您可以使用dateutil模块。

import dateutil

dataset = [{'date': '2017-01-27 21:56:57'}]

for d in dataset:
    d['timeStruct'] = dateutil.parser.parse(d['date']).strftime('%Y-%m-%d')

print(dataset)

输出:

[{'date': '2017-01-27 21:56:57', 'timeStruct': '2017-01-27'}]

答案 2 :(得分:1)

您必须首先使用strptime()将其转换为元组,然后使用strftime()将其再次格式化为字符串:

dataset = [{'date': '2017-01-27 21:56:57'}]
for d in dataset:
    timetuple = time.strptime(d['date'],"%Y-%m-%d %H:%M:%S")
    d['timeStruct'] = time.strftime("%Y-%m-%d",timetuple)

print(dataset)

>> [{'date': '2017-01-27 21:56:57', 'timeStruct': '2017-01-27'}]