当前时间到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
你可以使用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
将生成的日期时间格式化为具有相同格式的字符串。
感谢@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)
你尝试过什么?请包括你在这里尝试过的内容 – GLaDOS
什么类型的时间:a)一个字符串,b)一个日期时间,c)一个可识别时区的日期时间,d)其他的东西? – Alexander
@Alexander datetime –