这应该很简单,但是
Python的日常时间过于复杂,使得简单的事情变得复杂……
所以我有一个HH:MM格式的时间字符串(例如’09:30′),我想把它变成今天日期的日期时间.不幸的是,默认日期是1900年1月1日:
>>> datetime.datetime.strptime(time_str,"%H:%M") datetime.datetime(1900,1,9,50)
datetime.combine看起来就像是这个意思,但如果我能弄清楚如何解析时间以便接受它,我会很高兴:
Now = datetime.datetime.Now() >>> datetime.datetime.combine(Now,time.strptime('09:30','%H:%M')) TypeError: combine() argument 2 must be datetime.time,not time.struct_time >>> datetime.datetime.combine(Now,datetime.datetime.strptime('09:30',not datetime.datetime >>> datetime.datetime.combine(Now,datetime.time.strptime('09:30','%H:%M')) AttributeError: type object 'datetime.time' has no attribute 'strptime'
这种怪物有效……
>>> datetime.datetime.combine(Now,datetime.time(*(time.strptime('09:30','%H:%M')[3:6]))) datetime.datetime(2014,23,30)
……但必须有更好的方法来做到这一点……!?
解决方法
function signature说:
datetime.combine(date,time)
所以传递一个datetime.date对象作为第一个参数,并将datetime.time对象作为第二个参数传递:
>>> import datetime as dt >>> today = dt.date.today() >>> time = dt.datetime.strptime('09:30','%H:%M').time() >>> dt.datetime.combine(today,time) datetime.datetime(2014,30)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。