当前位置: 代码迷 >> python >> Python通过打印建议转换时间
  详细解决方案

Python通过打印建议转换时间

热度:78   发布时间:2023-07-16 10:39:08.0

语义错误:我怎么做错了?

from datetime import datetime
m2="23:00:00"

in_time = datetime.strptime(m2, "%H:%M:%S")
out_time = datetime.strftime(in_time, "%I:%M:%S %p")

print(out_time)

if out_time < "12:00:00" :
    print('Good morning.')
elif "12:00:00" <= out_time < "04:00:00":
    print('Good afternoon.')
else :
    print('Good evening.')

答案(这是错误的):

上午11:00:00早上好。

您正在尝试比较时间字符串。 相反,您应该比较值,例如:

码:

def time_of_day_msg(in_time):
    if in_time < dt.time(hour=12):
        return 'Good morning.'
    elif in_time < dt.time(hour=16):
        return 'Good afternoon.'
    else:
        return 'Good evening.'

测试代码:

import datetime as dt
for time in ("1:00:00", "13:00:00", "23:00:00"):
    print(time, time_of_day_msg(
        dt.datetime.strptime(time, "%H:%M:%S").time()))

结果:

1:00:00 Good morning.
13:00:00 Good afternoon.
23:00:00 Good evening.

如果您希望获得上午,则需要一个从00:00到11:59的开始时间,就像24小时制一样,您将在12:00之后成为下午。

另一个问题是,您正在将时间转换为具有每小时2点的格式的字符串,然后比较该字符串以确定要打印的内容。 尝试比较时间,该时间可以通过构造函数而不是strptime

from __future__ import print_function
import datetime

in_time = dateteime.time(11, 15) # Time in H:M 11:15 AM
if in_time < datetime.time(12):  # Before Noon
    goodbit = "morning"
elif in_time < datetime.time(16):  # Before 4 PM (we already know > 12:00)
    goodbit = "afternoon"
else:  # (After 16:00)
    goodbit = "evening"
print("{} Good {}".format(in_time.strftime("%I:%M:%S %p"), goodbit)