在Python中将当前时间加一小时
我正在写一个Python脚本,用来获取时间。
当我现在的时间是晚上8:30时,我想知道怎么把时间加一个小时,这样就能显示成9:00PM和9:30PM。
这里有个例子:
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:30PM,ID为4204
的标签会显示8:00PM,而ID为4205
的标签会显示8:30PM。我希望这些标签能显示成8:30PM
、9:00PM
和9:30PM
。
你能告诉我怎么把ID为4204和4205的标签时间加一个小时吗?
2 个回答
8
关于时间偏移,你可以使用 datetime.timedelta
这个工具:
>>> 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')
0
你可以使用从纪元开始的秒数来进行计算:
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