Python 从字符串读取并设置变量
可能重复的问题:
将字符串转换为日期时间
例子:'12:00:01 AM'
我想设置一些变量:hr = 12,min = 00,s = 01,t = AM
请帮我比较时间,我想比较(例如:1:10:00 PM < '12:00:01 AM')
用 < 的符号比较时,结果并不总是正确的。
所以我在尝试写代码来通过设置变量来比较时间。
不过,如果有现成的函数可以直接使用,请告诉我。
否则,请帮我设置这些变量。
1 个回答
0
用日期时间对象来比较日期和时间会简单很多,而不是自己去设置小时、分钟、秒等变量,然后再进行计算。
可以使用标准库里的 datetime.strptime:
import datetime as dt
date1 = dt.datetime.strptime('12:00:01 AM', '%I:%M:%S %p')
date2 = dt.datetime.strptime('1:10:01 PM', '%I:%M:%S %p')
print(date1)
# 1900-01-01 12:00:01
print(date2)
# 1900-01-01 13:10:01
print(date2 < date1)
# False
或者,使用 dateutil:
import dateutil.parser as parser
date1 = parser.parse('12:00:01 AM')
date2 = parser.parse('1:10:00 PM')
print(date1)
# 2012-01-13 00:00:01
print(date2)
# 2012-01-13 13:10:00
print(date2 < date1)
# False
上面的内容说明了不需要为小时、分钟和秒设置变量。不过,从 datetime.datetime 对象中获取这些信息也是很简单的:
In [44]: x = dt.datetime.strptime('12:00:01 AM', '%I:%M:%S %p')
In [45]: x.hour, x.minute, x.second
Out[45]: (0, 0, 1)