2017-12-07 20 views
0

私はサードパーティのウェブサイトのHTMLを解析しています。日付と時刻は常に英国の時刻形式ですが、ソースにはタイムゾーン情報はありません。文字列をオブジェクトに変換するのは、datetime.strptime()を使用すれば十分ですが、タイムゾーン情報を追加するにはどうすればいいですか?Python:日付文字列をUTCに変換

最終的には、これらの文字列をUTC形式のdatetimeオブジェクトに変換する必要があります。コードは常にタイムゾーンを認識するPC上で実行されます。つまり、datetime.now()はイギリス時間を返します。

temp = '07/12/2017 13:30' 
dt = datetime.strptime(temp, '%d/%m/%Y %H:%M') 

これを行うには良い方法がありますか?

offset = datetime.now() - datetime.utcnow() 
dt -= offset

答えて

0

使用pytz

import datetime 
import pytz 

temp = '07/12/2017 13:30' 
dt = datetime.strptime(temp, '%d/%m/%Y %H:%M') 
timezone = pytz.timezone("Etc/Greenwich") 
d_aware = timezone.localize(dt) 
d_aware.tzinfo 
> <DstTzInfo 'Etc/Greenwich' PST-1 day, 16:00:00 STD> 
d_aware 
datetime.datetime(2017, 12, 7, 13, 30, tzinfo=<StaticTzInfo 'Etc/Greenwich'>) 
+0

お寄せいただきありがとうございます。サードパーティライブラリを使用せずにこれを行うことは可能ですか? PCのタイムゾーンオフセットを取得する方法があるのか​​どうか疑問に思っています(これはイギリスの時間でしょう)。 – Birchy

+0

あなたのPCは英国時間ですか、あなたは英国時間を掃除しているサイトですか?ウェブサイトでローカリゼーションを行い、クライアントのタイムゾーン(スクレイパーなど)にサーバーの時刻を変更することがあります。 – Adam

+0

私は英国にあり、英国のウェブサイトを削っています。私がUTCに変換する必要があるのは、スクラップしたデータを使用してAPIとやり取りし、UTCにデフォルト設定するためです。私は両方のイギリスのタイムゾーンを使用していると確信しているので、私は自分のPCを変換に使っても構いません。 – Birchy

0

はそんなに簡単に日付を操作できるよう、いくつかの良いライブラリがあります。私はdateparserparsedatetime、およびarrowが好きです。

import dateparser as dp 
dt = dp.parse('07-12-2017 13:30 PST') 
print (dt) 

dt = dp.parse("Yesterday at 3:00am EST") 
print(dt) 


2017-07-12 13:30:00-08:00 
2017-12-06 17:07:07.557109-05:00 
関連する問題