[英]Weird python time.strftime() timezone display
大約是“ 2013-02-27 11:02”(格林尼治標准時間),而且正如我在法國一樣,我的當地時間大約是“ 2013-02-27 12:02 +0100”。 我在機器上播放了以下命令:
Python 2.6.8 (unknown, Apr 14 2012, 04:15:37)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import time
>>> datefmt = '%Y-%m-%d %H:%M:%S %Z'
>>> paris_time = (time.gmtime(), time.localtime())
>>> paris_time[0]
time.struct_time(tm_year=2013, tm_mon=2, tm_mday=27, tm_hour=11, tm_min=2, tm_sec=2, tm_wday=2, tm_yday=58, tm_isdst=0)
>>> paris_time[1]
time.struct_time(tm_year=2013, tm_mon=2, tm_mday=27, tm_hour=12, tm_min=2, tm_sec=2, tm_wday=2, tm_yday=58, tm_isdst=0)
>>> time.strftime(datefmt, paris_time[0]), time.strftime(datefmt, paris_time[1])
('2013-02-27 11:02:02 CET', '2013-02-27 12:02:02 CET')
>>>
然后,我將機器時區更改為“ New York”,並重播了最后一個命令:
>>> paris_time[0]
time.struct_time(tm_year=2013, tm_mon=2, tm_mday=27, tm_hour=11, tm_min=2, tm_sec=2, tm_wday=2, tm_yday=58, tm_isdst=0)
>>> paris_time[1]
time.struct_time(tm_year=2013, tm_mon=2, tm_mday=27, tm_hour=12, tm_min=2, tm_sec=2, tm_wday=2, tm_yday=58, tm_isdst=0)
>>> time.strftime(datefmt, paris_time[0]), time.strftime(datefmt, paris_time[1])
('2013-02-27 11:02:02 EST', '2013-02-27 12:02:02 EST')
>>>
有關信息:CET是+0100的代碼,EST是-0500的代碼。
python time.strftime(format [,t])文檔在表中指出:
%Z時區名稱(如果沒有時區,則沒有字符)。
“不存在時區”是什么意思? 時區在struct_time對象 (編輯:我最初在問題中寫了“ strftime object”)還是在系統中? 根據我的測試,我在對象paris_time [x]中沒有設置時區,但是顯示了一個時區。 那么,我在這里想念什么?
python date例程是(1)令人困惑的混亂和(2)圍繞系統調用的瘦包裝。
在我的(linux)機器上, man strftime
顯示了有關python例程大概包裝的系統調用strftime
信息。 並說使用了TZ系統。 這可以用tzset修改 。
只要“沒有時區存在”-我想這意味着系統TZ未設置。
(我不知道這如何傳播到Windows。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.