当前时间到Python中的-GMT摘要当前时间

问题描述:

我有一个时间是13:11:06,我想-GTT(即-0530)。我可以通过将第一个数字的字符串(转换为int)分开,然后减去它,然后重新加入,从而减去-5。但后来我以8:11:06的格式得到它,这是不正确的,因为它应该是08:11:06,其次是一个漫长的过程。有没有一种简单的方法来让我的时间-GMT格式(8时11分06秒)当前时间到Python中的-GMT摘要当前时间

这是我做过什么让日期时间后得到-GMT时间

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

你尝试过什么?请包括你在这里尝试过的内容 – GLaDOS

+0

什么类型的时间:a)一个字符串,b)一个日期时间,c)一个可识别时区的日期时间,d)其他的东西? – Alexander

+0

@Alexander datetime –

你可以使用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 

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

+0

感谢@Martiin。这正是我需要的原因。 –

您可以使用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) 

这样,您就可以减去轻松

使用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)

假设时间是一个DateTime实例

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' 

如果对象是datetime和你不关心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)