私はLuaを使ってタイムゾーンのオフセットを見つけたいと思っていますが、私は奇妙な動きに直面しています。タイムゾーンのオフセットを調べる
私は、コードを使用しています:
出力を生成local t1 = os.time();
local t2 = os.time(os.date("!*t"));
print(t1, t2, t1 - t2);
local t1 = os.time(os.date("*t"));
local t2 = os.time(os.date("!*t"));
print(t1, t2, t1 - t2);
local t1 = os.date("%c");
local t2 = os.date("!%c");
print(t1, t2);
local t1 = os.time(os.date("*t", 86400));
local t2 = os.time(os.date("!*t", 86400));
print(t1, t2, t1 - t2);
local t1 = os.date("*t");
local t2 = os.date("!*t");
print(t1.hour, t1.isdst, t2.hour, t2.isdst);
print(((t1.hour - t2.hour) * 60 + (t1.min - t2.min)) * 60);
:
今私は(現在は夏の時間のために、冬にはUTCであるUTC + 2に位置しています1496733916 1496730316 3600
1496733916 1496730316 3600
06/06/17 09:25:16 06/06/17 07:25:16
86400 82800 3600
9 true 7 false
7200
+1、CEST)ので、私は7200秒のオフセットを見込むことを期待していました。しかし最初の2つの試みは同等でなければなりません。私に1時間だけの違いを与えてください。人間が判読可能な形式で時間を印刷すると、両方の間のオフセットが2時間であることがはっきりと分かる。 4番目の試行では、固定小数点(1日の秒数86400、this questionから)を使用しています。オフセットも1時間です)。最後に、時間を直接減算すると(そして時間オフセットがない場合は分だけ)、私は2時間のオフセットを取得します。
これは、夏時間やdstによるものと思われます。私が達成しようとしているのは、タイムスタンプ(すでにUTC)から時刻を取得することです。os.time
はローカルタイムであるため、タイムスタンプを変換してローカルタイムに一致させる必要があります。
何か完全に迷っていますか?
おそらく、私が[ここ](https://stackoverflow.com/questions/43600810/get-specific-utc-date-and-time-in-lua/43601438#43601438)に寄稿した答えが –
ありがとうあなたのコメントのために。私はまたそれを考慮しましたが、私はdstが+1時間であると仮定したくないと思っています。国によっては30分があるかもしれません。 –
@JavierMr - [zone_diff(秒)その](https://stackoverflow.com/a/43069253/1263584)答えは間違っていた。今は修正されています。 –