我想比较用户的时间输入,以确保它在python中的格式正确

时间:2017-04-02 22:43:46

标签: python python-3.x

我正在编写一个程序,接受用户以am / pm格式输入的时间。我想确保用户输入其他内容,它会带来错误,而不仅仅是程序崩溃。 我所说的是,用户必须以HH:MM am / pm格式输入时间。例如“下午2:00”或“上午11:00”以及其他任何其他事情都要求出错。

我能做的最好的事情是

print("Make all inputs using the format 'hh:mm am/pm' e.g 10:00 am ... and add 0 before single numbers  e.g 3 ==> 03" )
while True:
   start = input("At what is the start time?: ")
   end = input("At what is the end time?: ")
   if len(start) != 8:
      print("error! wrong value/format entered as the start time")
   elif len(end) != 8:
      print("error! wrong value/format entered as the end time")
   else:
      break

1 个答案:

答案 0 :(得分:0)

以下是两种方法,我个人更喜欢日期转换方法

日期转换方法

我会检查是否可以将它们转换为日期Python对象。我使用%H:%M %p,它是小时:分钟上午/下午(如你的提示所指定)。

import time
print("Make all inputs using the format 'hh:mm am/pm' e.g 10:00 am ... and add 0 before single numbers  e.g 3 ==> 03" )
while True:
  start = input("At what is the start time?: ")
  end = input("At what is the end time?: ")

  try:
      time.strptime(start,'%H:%M %p')
      time.strptime(end,'%H:%M %p')
      print("Good Strings")
  except:
      print("Bad Strings")

正则表达式方法

我使用以下正则表达式:

r"^(?:1?[012]|[0-9]):[0-5][0-9]\s*(?:am|pm)$"i

这是Regex101:

https://regex101.com/r/Z1YMap/2