Substract current time to -GMT in python
我有一个时间是13:11:06,我想-格林尼治标准时间(即-0530)。我可以通过简单地做-5减去它,方法是将字符串拆分为第一个数字(转换为int),然后减去它,然后重新连接。但我得到的格式是8:11:06,这是不正确的,因为它应该是08:11:06,其次是一个漫长的过程。有没有一种简单的方法可以让我的时间以格林尼治标准时间格式(08:11:06)计算?
这是我在得到日期时间之后得到的-gmt时间
1 2 3 4 5 6 7 | timesplithour = int(timesplit[1]) + -5 timesplitminute = timesplit[2] timesplitseconds = timesplit[3] print timesplithour print timesplitminute print timesplitseconds print timesplithour +":" + timesplitminute +":" + timesplitseconds |
使用
1 2 3 4 5 6 7 8 9 10 | 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) |
产量
1 2 3 4 | 7 41 6 07:41:06 |
请注意,这将减去问题中最初提到的5小时30分钟。如果您真的只想减去5小时,请使用
您可以使用python的
1 2 3 4 5 | 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") |
这将打印:
1 | 07:41:06 |
首先,它将字符串转换为
如果对象是datetime,而您不关心dst,那么您可以做的最简单的事情是,
1 2 3 4 5 6 7 8 9 | 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) |
假设时间是日期时间实例
1 2 3 4 5 6 7 8 9 10 | 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' |
您可以使用datetimes timedelta。
1 2 3 4 | 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) |
这样你就可以很容易地减去