2011-07-24 12 views
2

私は次のスクリプトは、tzinfoオブジェクトを定義している:今は時間表記の標準

import time 
from datetime import datetime, timedelta, tzinfo 

class ManilaTime(tzinfo): 
    def utcoffset(self, dt): 
    return timedelta(hours=8) 

    def tzname(self, dt): 
    return "Manila" 

manila = ManilaTime() 

を、私は私に

2011-07-24 12:52:06+08:00 

質問を与える

t = datetime(tzinfo=manila, *time.gmtime()[:-3]) 
print t 

を言うつもりです:12:52:06+08:00の意味は?標準に基づいて、UTCオフセットを含む時刻情報を読み取る方法を学びたいと思います。私はtime.gmtime()を使用したことを無視してください。私は時間文字列自体しか持っていないとしましょう。どのように私はそれを読むのですか?

A.マニラ時間を取得するために追加を実行する必要があります。これを読めば、私は計算をしなければならないと私はそれは私が+08:00によって相殺すべきであるグリニッジの12:52:06、だ

を言いますよ。意味はマニラの20:52:06です。

B.私は額面でそれを取ると、それはマニラの12:52:06だし、それは+08:00でUTCからのオフセットです

を言いますよ。意味は、グリニッジの04:52:06です。

どちらが正しいですか? AまたはB

答えて

5

12:52:06+08:00は、一般に、UTCより8時間早いタイムゾーンでの指定時間です。だからBが正しいでしょう。

ただし、は、タイム・ストリングを正しく生成しませんでした。time.gmtime()はタイムゾーンなしで時刻を返すだけです。あなたはdatetime()に時間がManillaタイムゾーンであると言いました。したがって、この特定のケースでは、Aが正しいでしょう。

注:datetime.strptimeは、タイムゾーンでは動作しません - あなたはstrptimedatetime.strftimeため%zフォーマットコードを使用しますが、できません。これを行う必要がある場合は、dateutilを使用してください。How to parse dates with -0400 timezone string in python?

関連する問題