如何在Python中访问meridiem?

时间:2015-10-29 12:59:42

标签: python

我在使用Python访问meridiem部分时遇到了问题。

在python中考虑这段代码: -

import datetime
time = input("Enter the time : (HH:MM:AM/PM)")
# the above time is in string format so to make it in datetime.datetime type
# we need to use strptime function.
time = datetime.datetime.strptime(time, "%H:%M:%p")
# now to access different parts of variable time:-
print(time.hour)  # to access hour
print(time.minute)  # to access minute

但我不知道如何检查用户是否输入了AM或PM。 尽力帮助

感谢' S

4 个答案:

答案 0 :(得分:1)

time.hour将小时作为24H值(0-23)返回。因此,如果小时值低于12,则为AM,否则为PM。

答案 1 :(得分:1)

考虑以下与解释器的会话:

>>> import time
>>> time.strptime('9:00 AM', '%I:%M %p')
time.struct_time(tm_year=1900, tm_mon=1, tm_mday=1, tm_hour=9, tm_min=0, tm_sec=0, tm_wday=0, tm_yday=1, tm_isdst=-1)
>>> time.strptime('9:00 PM', '%I:%M %p')
time.struct_time(tm_year=1900, tm_mon=1, tm_mday=1, tm_hour=21, tm_min=0, tm_sec=0, tm_wday=0, tm_yday=1, tm_isdst=-1)

如果您想知道它是AM还是PM,您可以使用以下内容:

>>> get_meridiem = lambda tm: 'AM' if tm.tm_hour < 12 else 'PM'
>>> get_meridiem(time.strptime('9:00 AM', '%I:%M %p'))
'AM'
>>> get_meridiem(time.strptime('9:00 PM', '%I:%M %p'))
'PM'
>>> get_meridiem(time.strptime('12:00 PM', '%I:%M %p'))
'PM'
>>> get_meridiem(time.strptime('11:59 AM', '%I:%M %p'))
'AM'

答案 2 :(得分:1)

您正在

中使用%H
time = datetime.datetime.strptime(time, "%H:%M:%p")

%H是24小时时间格式。您解析的时间字符串采用12小时时间格式,因此,您应使用%I代替12小时格式。

time = datetime.datetime.strptime(time, "%I:%M:%p")
当您将小时数解析为24小时时间格式时,

strptime可能会忽略meridiem。

答案 3 :(得分:1)

你非常接近,只需将反向应用于strptime。

amorpm = time.strftime("%p")
print(amorpm)