2016-08-08 9 views
0

DateTimeオブジェクトにタプル時間を変換します。ここではPython27 - 私は、このような電子メールからのタイムスタンプを取得しようとしている

d = email.utils.parsedate('Thu, 4 Aug 2016 07:02:01 -0700 (PDT)') 

Result: (2016, 8, 4, 7, 2, 1, 0, 1, -1) 

:すべての

Received: by 10.64.149.4 with SMTP id tw4csp1211013ieb; 
    Thu, 4 Aug 2016 07:02:01 -0700 (PDT) 

まず、私は、タイムスタンプを解析問題になる。私は結果をdatetimeに変換しようとしますが、無駄です。

d = email.utils.parsedate('Thu, 4 Aug 2016 07:02:01 -0700 (PDT)') 

date_object = datetime(d) 

Result: Traceback (most recent call last): 
    File "data.py", line 12, in <module> 
    date_object = datetime(d) 
TypeError: an integer is required 

どうしたのですか?

+0

読む十分です'datetime.strptime'について:https://docs.python.org/3.4/library/datetime.html#datetime.datetime.strptimeおよびhttps://docs.python.org/3.4/library/datetime.html#strftime -strptime-behavior – DeepSpace

+0

@DeepSpaceI%Zの形式が悪い指令であるため、strptimeを使用できません – echo

+0

何を意味していますか? – DeepSpace

答えて

2

email.utils.parsedatereturns a 9 tuple similar to the structure struct_time but with the index 6,7 and 8 unusable

struct_time:

Index Attribute Values 
0  tm_year  (for example, 1993) 
1  tm_mon  range [1, 12] 
2  tm_mday  range [1, 31] 
3  tm_hour  range [0, 23] 
4  tm_min  range [0, 59] 
5  tm_sec  range [0, 61]; see (2) in strftime() description 
6  tm_wday  range [0, 6], Monday is 0 
7  tm_yday  range [1, 366] 
8  tm_isdst 0, 1 or -1 

そしてdatetimeような何かを行うことができ、オブジェクトはそのコンストラクタ

に異なる値を必要としますdatetime.datetime(year, month, day[, hour[, minute[, second[, microsecond[, tzinfo]]]]])

これは、タイムゾーン情報を無視し、現地時間でオブジェクトを作成しますので、これで慎重に:

あなたが直接

date_object = datetime(*d[0:6])


編集してあなたのタプルの便利な部品を使用してdatetimeを作成することができます。


編集2:あなたは、PDTがtzinfoのための有効な名前ではないので、あなただけの、あなたの文字列の末尾から(PDT)をカットする必要がstrptimeを使用することによってこの問題を解決することができますが、-0700

1

タプルの最後の2つの項目が異常です。タイムゾーンデータのようには見えません。しかし、あなたはタイムゾーンを意識datetimeオブジェクトを必要としない場合、あなたはこのdatetime(*d[:-2])

関連する問題