Python 如何将isoformat中包含datetime的字符串转换为日期和时间值?
我有以下字符串格式(Python 3.6): 我把它作为脚本的一个参数。 我想将日期设置为“YYYY-MM-DD”,时间设置为“HH:MM” 我试图用以下方法将其转换:Python 如何将isoformat中包含datetime的字符串转换为日期和时间值?,python,Python,我有以下字符串格式(Python 3.6): 我把它作为脚本的一个参数。 我想将日期设置为“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_tim
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'
您需要将整个字符串解析为一个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
由于日期似乎是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")
对于“重复”日期时间混淆:我使用了
importdatetime
。如果使用datetime import datetime中的,则可以去掉额外的datetime。
试试这个:我们有一个用于解析日期的最佳软件包,名为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
作为strtime
参数提供的模式必须覆盖整个字符串,否则不清楚这些信息在字符串中的位置。提取小时和分钟的Als:如果您的模式可以工作,它会提取10:04
还是04:57
?@ChristianKönig当我这样做时:打印datetime.datetime.utcnow().isoformat()
我得到:2018-11-19T12:01:54.579000
,以及当我打印datetime.datetime.utcnow()时
我得到了2018-11-19 12:01:54.579000
所以在这种情况下开始时间应该是12:01
属性错误:键入object'datetime.datetime'没有来自isoformat'的属性@Luis只需删除一个datetime
就可以阅读start=datetime.fromsofisoformat(text)
啊,你说得对。将进行编辑。@toti08已经进行了编辑。错误是在我删除了冗余的datetime之后发生的。我认为这个函数是在Python3.7中引入的,我运行Python3。6@toti08我尝试了datetime.datetime.fromsoformat(start\u timestamp)和datetime.fromsoformat(start\u timestamp),都是相同的错误。此函数不适用于Python 3.6
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