2014-05-01 80 views
1

我有以下腳本的這段:根據夏令時(倫敦)的夏令時檢測並更改時差?

newtime = datetime.datetime.strptime(result_time, "%H:%M") 
newtime += datetime.timedelta(hours=5) 
result_time = str(newtime.time())[:-3] 

當夏令實際上是應該改變的中間線到:

newtime += datetime.timedelta(hours=6) 

不過,我無法使用time.localtime()要做到這一點,它應該在倫敦檢查GMT時間...

任何想法?

回答

1

倫敦和GMT不一樣。倫敦是GMT或BST,具體取決於夏令時是否生效。

  • 如果說倫敦,使用pytzEurope/London時區標識符。

  • 如果您的意思是格林威治標準時間,然後使用pytzUTC時區標識符。

  • 如果您可以運行Python 3並且不需要其他時區,那麼您可以放棄pytz並將tzinfo設置爲timezone.utcas directly supplied by Python 3.3

在兩種情況下,你會想5到6個小時專門添加到您的datetime對象。如果您嘗試補償另一個時區(如美國中部時間),則只需使用帶有適當標識符的pytz(例如America/Chicago)。

如果由於某種原因您嘗試使用執行python代碼的機器的本地時區,請使用tzlocal模塊,然後將其傳遞給pytz。