2015-04-23 111 views
1

我有點困惑numpy如何處理時區。如果我只是使用日期創建日期時間對象,它似乎使用祖魯時區。如果我使用額外的時間步,它使用我當前的時區。如果我然後操縱這些對象,例如添加timedelta,結果是不同的:numpy.datetime64中的時區問題

import numpy as np 
a = np.datetime64('2015-04-22') 
b = np.datetime64('2015-04-22T00:00') 
delta = np.timedelta64(1,'h') 
print(a+delta,b+delta) 

我必須確保所有值都在同一個時區,所以我的問題是,我怎麼能確保用戶,誰初始化這些日期不混用日期並與時間日期。

回答

0

如果您在帶時間步的datetime中指定Zulu,則會得到統一的數據。

In [30]: b = np.datetime64('2015-04-22T00:00Z') 

In [31]: b + delta 
Out[31]: numpy.datetime64('2015-04-22T03:00+0200') 

In [32]: a + delta 
Out[32]: numpy.datetime64('2015-04-22T03:00+0200','h') 

http://docs.scipy.org/doc/numpy/reference/arrays.datetime.html#basic-datetimes

+0

我知道,但功能依賴於用戶的輸入,所以我要檢查什麼用戶做了。這是我的主要問題。如果用戶有時僅使用日期,有時使用完整的日期時間,則會遇到運行代碼的問題。 – MichaelA

+1

在這種情況下,您應該指定用戶應該放入什麼,並驗證輸入,如果用戶輸入的格式不正確,則會拋出錯誤 –