在python中将当前时间减去-GMT

时间:2016-03-03 08:32:29

标签: python datetime

我的时间是13:11:06,我想-GMT(即-0530)。我可以通过简单地通过将第一个数字(转换为int)的字符串拆分然后减去它然后重新连接来减去它。但后来我以8:11:06的格式得到它,这是不正确的,因为它应该是08:11:06,其次是一个漫长的过程。有没有一种简单的方法可以让我的时间用-GMT格式(08:11:06)

这是我在获取日期时间后获得的-GMT时间

timesplithour = int(timesplit[1]) + -5
timesplitminute = timesplit[2]
timesplitseconds = timesplit[3]
print timesplithour
print timesplitminute
print timesplitseconds
print timesplithour + ":" + timesplitminute + ":" + timesplitseconds

5 个答案:

答案 0 :(得分:1)

您可以使用Python的datatime库来帮助您:

import datetime

my_time = "13:11:06"
new_time = datetime.datetime.strptime("2016 " + my_time, "%Y %H:%M:%S") - datetime.timedelta(hours=5, minutes=30)
print new_time.strftime("%H:%M:%S")

这将打印:

 07:41:06

首先,它将您的字符串转换为datetime对象。然后它创建一个timedelta对象,允许您从datetime对象中减去5小时30分钟。最后,它使用strftime将生成的日期时间格式化为相同格式的字符串。

答案 1 :(得分:1)

使用datetime模块:

from datetime import datetime, timedelta

dt = datetime.strptime('13:11:06', '%H:%M:%S')
time_gmt = (dt - timedelta(hours=5, minutes=30)).time()

print(time_gmt.hour)
print(time_gmt.minute)
print(time_gmt.second)
s = time_gmt.strftime('%H:%M:%S')
print(s)

<强>输出

7
41
6
07:41:06

请注意,这会减少问题中最初提到的5小时30分钟。如果您真的只想减去5小时,请使用timedelta(hours=5)

答案 2 :(得分:0)

您可以使用datetimes timedelta

print datetime.datetime.today()
>>> datetime.datetime(2016, 3, 3, 10, 45, 6, 270711)
print datetime.datetime.today() - datetime.timedelta(days=3)
>>> datetime.datetime(2016, 2, 29, 10, 45, 8, 559073)

这样你可以轻松减去

答案 3 :(得分:0)

假设时间是日期时间实例

import datetime as dt
t = datetime(2015,12,31,13,11,06)
#t.time() # gives time object. ie no date information

offset = dt.timedelta(hours=5,minutes=30) # or hours=5.5

t -= offset    

t.strftime(("%H:%M:%S") # output as your desired string
#'18:41:06'

答案 4 :(得分:0)

如果对象是日期时间并且您不关心DST,那么您可以做的最简单的事情是,

In [1]: from datetime import datetime

In [2]: curr = datetime.now()

In [3]: curr
Out[3]: datetime.datetime(2016, 3, 3, 9, 57, 31, 302231)

In [4]: curr.utcnow()
Out[4]: datetime.datetime(2016, 3, 3, 8, 57, 57, 286956)