センサーからいくつかのデータを収集していますが、次のようにしてタイムスタンプを取得しています。
_ "time": {
"seconds": 40,
"year": 115,
"month": 5,
"hours": 7,
"time": 1434549820776,
"date": 17,
"minutes": 3,
"day": 3,
"timezoneOffset": 420
},
_
私はpythonセンサーからのデータを処理するスクリプト(受信データはjson形式))を持っています。time
の値を取得し、読み取り可能な時刻形式に変換します。
私はdatetime.fromtimestamp(1434549820776/1000).strftime('%Y-%m-%d %H:%M:%S')
を使用し、それは_'2015-06-17 15:03:40'
_を返しました
どこでdatetime.utcfromtimestamp(1434549820776/1000).strftime('%Y-%m-%d %H:%M:%S')
が返されたか:_'2015-06-17 14:03:40'
_
あなたができるように時間差があるので、私の質問はどちらを使うのが良いですか?
Jsonを見ると、タイムスタンプがローカルで2015-06-17 07:03:40に対応していることがわかります。
TimezoneOffsetは、現地時間とUTC時間の間に7時間の差があることを示しています=> jsonに対応するUTC時間は2015-06-17 14:03:40です。
これはdatetime.utcfromtimestamp(1434549820776/1000).strftime('%Y-%m-%d %H:%M:%S')
(=> '2015-06-17 14:03:40')を使用したときに取得されるものであるため、タイムスタンプはUTC時間で書き込まれるため、utcfromtimestamp
を使用する必要があります。あなたは正確になりたいです。
どちらも正しく、単純に同じ時間を与えるわけではありません。どちらも、タイムスタンプはエポックからのミリ秒数(通常は1/01/1970 00:00 UTC)であると想定しています。
fromtimestamp
日付と時刻を現地時間で与えますutcfromtimestamp
は、日付と時刻をUTCで示します。どこに住んでいるのかわからないので(イギリス?)スペイン、フランス、ベルギー、デンマークでは、現地時間は冬はUTC + 1、夏はUTC + 2です。
あなたは、UTC時間と現地時間のどちらが必要かを知っている必要があります。
基本的に、機能するものを使用したいとします。理想的には、ドキュメントには、センサーが時間を報告するタイムゾーンが含まれます。センサーにタイムゾーンの認識が含まれている可能性は低いため、センサーをセットアップする人が最初に時間を設定するのと同じタイムゾーンにある可能性があります。
センサーで設定する時間を自由に決定できる場合、夏時間などのあらゆる種類のトラブルを回避できるため、通常はUTCを使用することをお勧めします。また、国際チームでもうまく機能します。
プログラムが実行されているPCのタイムゾーン設定とセンサーが一致していることが確実でない場合は、datetime.fromtimestamp(1434549820776/1000, timezone)
でも正しい答えかもしれません。