我具有以下字符串格式(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'
答案 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