我的代码需要一些帮助。我在更换琴弦时遇到了麻烦。
如果变量getTime3
有一个字符串30
,我正在检查字符串,然后我想用00
替换它。在我的代码中,它会找到字符串30
以将其替换为0030
,这是错误的。它应该是00
。
以下是代码:
if getTime3 == '11:30PM':
self.getControl(346).setLabel('12:00AM')
elif getTime3 == '12:30PM':
self.getControl(346).setLabel('1:00AM')
else:
ind = getTime3.find(':')
if getTime3[ind+1:ind+3]=='30':
getTime3 = getTime3[:ind]+':00'+getTime3[+2:]
self.getControl(346).setLabel(getTime3)
else:
getTime3 = str(int(getTime3[:ind])+1)+':30'+getTime3[+2:]
self.getControl(346).setLabel(getTime3)
我期望两种特殊情况,当程序找到:
时,它会检查是否存在30
然后将当前小时更改为下一小时并创建一个新字符串AM / PM标签,例如:从8
更改为9
并将30
替换为00
,以使其显示9:00PM
。如果结尾为00
,那么我想将00
更改为30
。我想在分钟部分添加30
并再次保留AM / PM部分。如果getTime3
包含字符串11:30AM
,那么我想将其更改为12:00PM
。
是否可以帮助我解决如何修复0030
以使其显示00
并添加下一个小时?
答案 0 :(得分:1)
使用Python,在x[a:b]
(包括)的切片中切片为a
,并在b
处结束(不包括)。
所以:getTime3[:ind]
是从0到 ind 独家的切片,即没有&#34;:&#34;。< / p>
索引是绝对索引,而不是相对索引。因此getTime3[+2:]
与getTime3[2:]
相同,它对应于从索引2开始的子字符串。
你想要的是:
getTime3 = getTime3[:ind] + ':00' + getTime3[ind + 3:]
# or
getTime3 = getTime3[:ind + 1] + '00' + getTime3[ind + 3:]
示例:
getTime3 = '08:30PM'
ind = getTime3.index(":")
getTime3[:ind] + ':00' + getTime3[ind + 3:]
# -> '08:00PM'
修改强>
如果您想按时进行一些计算,可以使用datetime
模块。
time_fmt = '%I:%M%p'
用于表示时间的格式如下&#39; 09:30 PM&#39;,其中:
如何添加30分钟:
import datetime
time3 = '09:30PM'
dt3 = datetime.datetime.strptime(time3, time_fmt)
dt3 += datetime.timedelta(minutes=30)
time3 = dt3.strftime(time_fmt)
如果要将分钟设置为0,则可以执行以下操作:
dt3 = datetime.datetime.strptime(time3, time_fmt)
dt3 = d3.replace(minute=0)
答案 1 :(得分:-1)
请不要使用错误的工具完成任务。您正在操纵时间,但使用字符串来执行此操作。从下午11:30开始到上午12:00:
import datetime
t3 = datetime.datetime.strptime(getTime3, '%I:%M%p')
t3 += datetime.timedelta(minutes=30)
print(t3.strftime('%I:%M%p'))
添加timedelta(minutes=30)
使意图非常明确。一些相关文档位于https://docs.python.org/3/library/datetime.html#strftime-and-strptime-behavior