在Python中,将当前时间向前添加一小时

2024-05-23 14:30:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在编写我的Python脚本来获得时间。

当我现在的时间是晚上8:30的时候,我想知道如何在标签上加上一个小时,也就是9:00,9:30?

例如:

if (0 <= datetime.datetime.now().minute <= 29):
   self.getControl(4203).setLabel(time.strftime("%I").lstrip('0') + ':00' + time.strftime("%p"))
   self.getControl(4204).setLabel(time.strftime("%I").lstrip('0') + ':30' + time.strftime("%p"))
   self.getControl(4205).setLabel(time.strftime("%I").lstrip('0') + ':00' + time.strftime("%p"))
else:
   self.getControl(4203).setLabel(time.strftime("%I").lstrip('0') + ':30' + time.strftime("%p"))
   self.getControl(4204).setLabel(time.strftime("%I").lstrip('0') + ':00' + time.strftime("%p"))
   self.getControl(4205).setLabel(time.strftime("%I").lstrip('0') + ':30' + time.strftime("%p"))

当我的当前时间在晚上8:30到8:59之间时,id为4203的标签将显示晚上8:30,id为4204的标签将显示晚上8:00,id为4205的标签将显示晚上8:30。我希望标签显示为类似于8:30PM9:00PM9:30PM的内容。

你能告诉我,我怎样才能加上一个小时后的标签与ids 4204和4205?


Tags: self脚本iddatetimeiftime时间标签
2条回答

对于时间偏移,可以使用^{}

>>> import datetime

>>> datetime.datetime.now()
datetime.datetime(2014, 7, 9, 21, 47, 6, 178534)

>>> datetime.datetime.now() + datetime.timedelta(hours=1)
datetime.datetime(2014, 7, 9, 22, 47, 16, 851338)

对于您的代码,下面是一个有一些改进的示例:

import datetime

# get current time
now = datetime.datetime.now()

# round to half hours
if (now.minute / 30):
    # minutes 30-59
    minute = 30
else:
    # minutes 00-29
    minute = 0
now = now.replace(minute=minute, second=0, microsecond=0)

def format(time):
    return time.strftime("%I").lstrip('0') + time.strftime(":%M%p")

# set labels
print(4203, format(now))
print(4204, format(now + datetime.timedelta(minutes=30)))
print(4205, format(now + datetime.timedelta(minutes=60)))

结果如下:

(4203, '11:00PM')
(4204, '11:30PM')
(4205, '12:00AM')

您可以使用epoch的秒数进行计算:

import time
t0 = time.time() # now (in seconds)
t1 = t0 + 60*30  # now + 30 minutes
t2 = t0 + 60*60  # now + 60 minutes

for t in [t0,t1,t2]:
   print time.strftime("%I %M %p",time.localtime(t))

输出

09 57 PM
10 27 PM
10 57 PM

如果要将时间舍入到前半小时,请添加以下行:

t0 -= t0 % (30*60) # round down to previous half-hour

相关问题 更多 >