我遇到了如何将军事时间从文本文件转换为标准时间并丢弃所有错误值的逻辑问题。我只需要向用户询问输入文件,并从输入的文本文件中显示内容。请帮帮我
答案 0 :(得分:3)
Python的datetime.time
对象使用“军事”时间。你可以这样做:
>>> t = datetime.time(hour=15, minute=12)
>>> u = datetime.time(hour=16, minute=44)
>>> t = datetime.datetime.combine(datetime.datetime.today(), t)
>>> t
datetime.datetime(2011, 5, 11, 15, 12)
>>> u = datetime.datetime.combine(datetime.datetime.today(), u)
>>> t - u
datetime.timedelta(-1, 80880)
稍纵即逝,你所描述的转换应该非常简单。
没有看到任何代码,很难说出你想要什么。但我认为你可以这样做:
raw_time = '2244'
converted_time = datetime.time(hour=int(raw_time[0:2]), minute=int(raw_time[2:4]))
converted_time = datetime.datetime.combine(datetime.datetime.today(), converted_time)
现在,您可以使用converted_time
,添加和减去timedelta
个对象。 Fyi,您可以像这样创建一个timedelta
:
td = datetime.timedelta(hours=4)
timedelta
构造函数的可能关键字参数的完整列表为here。
答案 1 :(得分:1)
from dateutil.parser import parse
time_today = parse("08:00")
from dateutil.relativedelta import relativedelta
required_time = time_today-relativedelta(minutes=35)
print required_time
datetime.datetime(2011, 5, 11, 7, 25)
答案 2 :(得分:1)
这不是其他两个的真正答案,而是我在python中处理日期和时间时使用的哲学:从用户获取后尽快转换为datetime对象,并且只在转换为字符串时才转换回字符串您将价值呈现给用户。
您需要的大部分日期/时间数学都可以通过日期时间对象完成,而它们的表兄弟则可以使用timedelta对象。除非你需要timedeltas与其他timedeltas的比率,否则这是另一个故事。