2016-03-03 116 views
-1

我有一個時間是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 –

回答

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 

首先我t將您的字符串轉換爲datetime對象。然後它創建一個timedelta對象,允許您從日期時間對象減去5小時30分鐘。最後它使用strftime將生成的日期時間格式化爲具有相同格式的字符串。

+0

感謝@Martiin。這正是我需要的原因。 –

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) 

這樣,您就可以減去輕鬆

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)

0

假設時間是一個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' 
0

如果對象是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)