2

Linuxのタイムスタンプから現在の時間を取得するにはどうすればよいですか? 年、月、日、分、秒は取得できますが、時間は取得できません。何か助けはありますか?

現在のコード:

local secondsPassed = os ~= nil and os.time() or tick()
local year = 1970 + math.floor(secondsPassed / (86400 * 365.25))
local days = math.floor((secondsPassed % (365.25 * 86400)) / 86400)
days = days + (year - 2011)
local minutes = math.floor((secondsPassed % 3600) / 60)
local seconds = math.floor(secondsPassed % 60)

壊れた:

local hours = math.floor((secondsPassed % 86400) / 3600)-- +1
4

2 に答える 2

4

ここにはいくつかの問題があります。

  • UNIX 時間は、1970 年 1 月 1 日午前 0 時 (GMT) を基準としています。GMT を使用していない場合は、タイム ゾーンに応じたオフセットが表示されます。お住まいの地域でサマータイムが実施されている場合、このオフセットは、かなり複雑な形で日付に基づいて変化する可能性があります。

  • 年は 365.25 日ではありません。年に基づいて、365 日または 366 日の長さです。(これは平均して 365.25 にもなりません。100 と 400 で割り切れる年の特殊なケースのため、平均すると 365.2425 になります。)

dateLuaとtimeモジュールを使用できない何らかの理由がない限り、それらを自分で再作成しようとするのではなく、使用することを強くお勧めします。

于 2012-12-21T21:57:13.560 に答える
0

あなたは超近かった。私はこれまでに次のように修正しました:

現地時間 = math.floor((secondsPassed % 86400) / 1440) + 1

于 2015-06-06T04:11:35.967 に答える