Python “转换字符串”;上午";或;PM";然后添加到没有日期的时间
我正在寻找将am/pm字符串转换为时间的方法,以便在一天中的两个不同时间之间进行比较。我试着使用Python “转换字符串”;上午";或;PM";然后添加到没有日期的时间,python,python-3.x,time,Python,Python 3.x,Time,我正在寻找将am/pm字符串转换为时间的方法,以便在一天中的两个不同时间之间进行比较。我试着使用time.strtime或类似的东西,但它们似乎都需要日期和时间 我的代码如下: current_hour = 12 current_minute = 37 current_section = "PM" due_hour = 9 due_minute = 0 due_section = "AM" import datetime ct_time = str(d
time.strtime
或类似的东西,但它们似乎都需要日期和时间
我的代码如下:
current_hour = 12
current_minute = 37
current_section = "PM"
due_hour = 9
due_minute = 0
due_section = "AM"
import datetime
ct_time = str(datetime.time(current_hour, current_minute))+current_section
print(ct_time)
due_time = str(datetime.time(due_hour, due_minute))+due_section
print(due_time)
ct_time_str = time.strptime(ct_time, '%H:%M:%S') # how to format this to time?
due_time_str= time.strptime(due_time,'%H:%M:%S') # how to format this to time?
if (ct_time_str>due_time_str):
print("still have time to turn in assignment")
else:
print("too late")
获取以下错误,不确定如何从str
转换为'time'
回溯(最近一次呼叫最后一次):
文件“main.py”,第15行,在
ct_time_str=time.strtime(ct_time,'%H:%M:%S'))
NameError:未定义名称“时间”
datetime可能会令人困惑,因为模块和类都称为datetime
将导入更改为从datetime导入datetime,time
。此外,进口应该排在最前面,但这并不是绝对必要的
分配ct\u时间
和due\u时间
时,使用str(datetime.time(args))
,它应该是str(time(args))
strtime来自datetime,而不是time,因此将time.strtime(args)
更改为datetime.strtime(args)
同样像DeepSpace&martineau所说的,您需要将“%p”添加到格式字符串中,以说明AM/PM部分
最终代码:
from datetime import datetime, time
current_hour = 12
current_minute = 37
current_section = "PM"
due_hour = 9
due_minute = 0
due_section = "AM"
ct_time = str(time(current_hour, current_minute))+current_section
print(ct_time)
due_time = str(time(due_hour, due_minute))+due_section
print(due_time)
ct_time_str = datetime.strptime(ct_time, '%H:%M:%S%p')
due_time_str= datetime.strptime(due_time,'%H:%M:%S%p')
if (ct_time_str < due_time_str):
print("still have time to turn in assignment")
else:
print("too late")
从日期时间导入日期时间,时间
当前小时=12
当前分钟=37
当前节=“PM”
到期时间=9小时
到期日/分钟=0
到期日
ct_时间=str(时间(当前_小时,当前_分钟))+当前_段
打印(ct\U时间)
到期时间=str(时间(到期小时、到期分钟))+到期段
打印(到期时间)
ct_time_str=datetime.strtime(ct_time,'%H:%M:%S%p'))
到期时间=datetime.strtime(到期时间,%H:%M:%S%p)
如果(ct时间长度<到期时间长度):
打印(“还有时间交作业”)
其他:
打印(“太晚”)
编辑:
将
if(ct\u time\u str
更改为if(ct\u time\u str>due\u str):
您是否收到错误?如果是这样,您会得到什么错误?我猜这不是因为日期,而是因为您没有解析AM/PM
部分(%p
指令)。请参见@DeepSpace:建议,使用time.strtime(ct\u-time,%H:%M:%S%p')
。仍然得到相同的错误,表示时间未定义:ct\u-time\u-str=time.strtime(ct\u-time,%H:%M:%S%p')名称错误:名称“time”未定义汉克代码没有错误,当我使用print(due\u-time\u-str)
它为什么返回1900-01-01 09:00?不是上午9:00:00。datetime对象包含日期和时间,如果您只想使用时间组件,请使用due\u time\u str.time()
。我刚才注意到的另一件事是你在if语句中的比较是错误的,应该是ct_time大于。