2 回答

TA貢獻(xiàn)1856條經(jīng)驗(yàn) 獲得超11個(gè)贊
PHP(64 位,無(wú)毫秒)的解決方案是
$ts = 13209562668824233;
$date = date_create("1601-1-1 UTC")
->modify((int)($ts/1000000)." Seconds")
->format('Y-m-d H:i:s')
; //"2019-08-06 10:57:48"

TA貢獻(xiàn)1852條經(jīng)驗(yàn) 獲得超1個(gè)贊
正如這個(gè)答案所解釋的,Chrome 時(shí)間戳不等于 Unix 紀(jì)元時(shí)間。這就是為什么您無(wú)法從此類方法中獲得預(yù)期結(jié)果的原因。它實(shí)際上是自 1601 年 1 月 1 日以來(lái)的微秒(與 Unix 紀(jì)元時(shí)間自 1970 年 1 月 1 日以來(lái)的秒數(shù)相反)。
您可以在此處測(cè)試您的 WebKit 時(shí)間戳,您會(huì)看到它返回 2019 年 8 月 6 日星期二 10:57:48 (UTC)。
所以要在代碼中轉(zhuǎn)換它,我們應(yīng)該首先減去 1970 和 1601 之間的差異(以微秒為單位),然后將值除以 100 萬(wàn)以獲得秒(C# 解決方案):
public static DateTime ConvertWebKitTime(long webkitEpoch)
{
const long epochDifferenceMicroseconds = 11644473600000000; // difference in microseconds between 1601 and 1970
var epoch = (webkitEpoch - epochDifferenceMicroseconds) / 1000000; // adjust to seconds since 1st Jan 1970
return DateTimeOffset.FromUnixTimeSeconds(epoch).UtcDateTime; // convert to datetime
}
- 2 回答
- 0 關(guān)注
- 268 瀏覽
添加回答
舉報(bào)