从当前时间开始

时间:2015-05-11 18:21:32

标签: python python-2.7

我想从当前时间开始12小时。

当我尝试这个时:

# Set the date and time row
current_time = time.time() # now (in seconds)
half_hour = current_time + 60*30  # now + 30 minutes
one_hour = current_time + 60*60  # now + 60 minutes


for t in [current_time,half_hour,one_hour]:
    if (0 <= datetime.datetime.now().minute <= 29):
        self.getControl(346).setLabel(time.strftime("%I" + ":30%p",time.localtime(t)).lstrip("%p"))
    else:
        self.getControl(346).setLabel(time.strftime("%I" + ":30%p",time.localtime(t)).lstrip("0"))

因为我正在使用time.strftime("%I"

,所以不会从当前时间开始添加小时数

我希望从当前时间获得小时数来计算小时数并添加小时数。

返回输出为:

7

我想从当前时间开始计算时间,以便我可以在当前时间前加上小时数。

你能举例说明如何在没有20150511070000的情况下从当前时间获得小时数吗?

1 个答案:

答案 0 :(得分:1)

首先获得转移时间

处理时间很棘手,因此我建议您尽可能使用库调用来为您完成工作。时间数学变得非常混乱,非常快。

from datetime import datetime, timedelta

original_time = datetime.now() # datetime.datetime(2015, 5, 11, 12, 32, 46, 246004)
print(original_time) # 2015-05-11 12:32:46.246004

offset = timedelta(hours=12) # datetime.timedelta(0, 43200)
shifted_time = original_time + offset # datetime.datetime(2015, 5, 12, 0, 32, 46, 246004)
print(shifted_time) # 2015-05-12 00:32:46.246004

然后阅读你需要的东西

随着时间的推移,您可以在原始时间或新时间轻松阅读任何部分时间:

original_time # datetime.datetime(2015, 5, 11, 12, 32, 46, 246004)
original_time.hour # 12
original_time.year # 2015
original_time.month # 5
original_time.day # 11
original_time.hour # 12
original_time.minute # 32
original_time.second # 46

查看the Datetime Documentation会显示值的范围如下:

MINYEAR <= year <= MAXYEAR
1 <= month <= 12
1 <= day <= number of days in the given month and year
0 <= hour < 24
0 <= minute < 60
0 <= second < 60

然后格式化并打印

如果您需要其他行为进行打印,请使用strftime,就像您一样。

datetime.strftime(original_time, "%I") # '12'
datetime.strftime(original_time, "%I:30%p") # '12:30PM'
datetime.strftime(shifted_time, "%I:30%p") # '12:30AM'
datetime.strftime(shifted_time, "%Y %H %M %S") # '2015 00 32 46'
datetime.strftime(original_time, "%Y %H %M %S") # '2015 12 32 46'

要点

时间数学

请注意timedelta是否允许您轻松地按时间和日期执行数学运算。操作非常简单,只需t1 = t2 + t3t1 = t2 - t3即可添加或减去时间。

格式

使用strftime以所需格式输出datetime