2017-07-08 122 views
0

我需要使用包含時間戳的API查詢以固定間隔報廢包含+/- 24h數據的在線數據庫。因爲我不知道服務器在哪裏,所以選擇像midnigth UTC一樣簡單的東西。使用DateTime計算UTC +0的午夜時間戳python 3.5

我發現很多關於SO的文檔來計算UTC意識到本地區域。實際上,我用這個protocole得到實際的UTC日期:

import datetime 
myDate = datetime.datetime.now(datetime.timezone.utc) 
print("TZ INFO = ", myDate.tzinfo) # return UTC+00:00 
print("DATE ", myDate) # return 2017-07-08 14:14:24.137003+00:00 
print("ISO DATE = ", myDate.timestamp()) # return 1499523264.137003 

第一個問題,爲什麼timestamp()帳戶返回取當地時區:1499523264.137003等於〜16h15,所以UTC +2與法國對應區。爲什麼timestamp()不會僅返回UTC + 0時間戳?我如何獲得UTC + 0時間戳?

第二個問題,我嘗試生成一個午夜日期查詢API,所以像我在很多崗位上看到這樣,我嘗試使用replace()功能:

myDate = myDate.replace(hour=0, minute=0, second=0,microsecond=0).astimezone(pytz.utc) 
print (myDate) # return 2017-07-08 00:00:00+00:00 

但是,當我嘗試print (myDate.timestamp())再次返回UTC + 2時間戳,因此2017-07-08的2AM。我怎樣才能輕鬆獲得午夜UTC + 0時間戳?

回答

0

我會建議使用pendulum模塊,因爲它使得時區和日期計算易於執行。

鐘擺意識到夏令時計劃,如倫敦和巴黎所示。它還可以提供UTC夏時制調整時間。當您需要對UTC進行調整時,您可以簡單地將replace方法與UTC結合使用。

>>> import pendulum 
>>> pendulum.create(2017,7,9,0,0,0,0,'Europe/London') 
<Pendulum [2017-07-09T00:00:00+01:00]> 
>>> pendulum.create(2017,7,9,0,0,0,0,'Europe/Paris') 
<Pendulum [2017-07-09T00:00:00+02:00]> 
>>> pendulum.create(2017,7,9,0,0,0,0,'UTC') 
<Pendulum [2017-07-09T00:00:00+00:00]> 
>>> t = pendulum.create(2017,7,9,0,0,0,0,'UTC') 
>>> t.replace(hour=+2) 
<Pendulum [2017-07-09T02:00:00+00:00]>