如何将等格式的包含datetime的字符串转换为日期和时间值?

时间:2018-11-19 11:53:08

标签: python

我具有以下字符串格式(Python 3.6):

'2018-11-19T10:04:57.426872'

我将其作为脚本的参数。 我想获取日期为'YYYY-MM-DD',时间为'HH:MM'

我尝试将其转换为:

from datetime import datetime
if __name__ == '__main__':
    start_timestamp = sys.argv[1]
    start_date =  datetime.strptime(sys.argv[1], '%Y-%m-%d')
    start_time =  datetime.strptime(sys.argv[1], '%H:%M')

但这给出了:

ValueError: unconverted data remains: T10:04:57.426872

在上面的示例中,我想查看:

start_date = '2018-11-19'
start_time = '10:04'

3 个答案:

答案 0 :(得分:1)

由于日期似乎采用ISO格式,因此很简单

start = datetime.datetime.fromisoformat(text)

将正确解析它。从那里,您可以获取日期和时间

start_date = start.strftime("%Y-%m-%d")
start_time = start.strftime("%H:%M")

编辑:

对于Python <3.7,您可以使用以下格式:

start = datetime.datetime.strptime(text, "%Y-%m-%dT%H:%M:%S.%f")

对于“重复的”日期时间混乱:我使用了import datetime。如果您使用from datetime import datetime,则可以摆脱其他datetime.

答案 1 :(得分:0)

您需要将整个字符串解析为一个datetime对象,然后从中提取所需的值。

dt = datetime.datetime.strptime('2018-11-19T10:04:57.426872', '%Y-%m-%dT%H:%M:%S.%f')
d = dt.date()
t = dt.time()
print(d.strftime('%Y-%m-%d'))
print(t.strftime('%H:%M'))

哪个输出:

2018-11-19
10:04

答案 2 :(得分:0)

尝试一下:我们拥有解析日期的最佳软件包之一,称为dateutil。

from dateutil import parser
date1='2018-11-19T10:04:57.426872'
print 'Start_date:',parser.parse(date1).strftime("%Y-%m-%d") 
print 'Start_time:',parser.parse(date1).strftime("%H:%M")

Result:Start_date:2018-11-19
       Start_time:10:04