簡體   English   中英

奇怪的python time.strftime()時區顯示

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM