我的时间是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
答案 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)