Date(1420335269000+0800) 為 **Unix 毫秒時間戳 + 時區偏移**。
1420335269000:自 1970-01-01 00:00:00 UTC 以來的毫秒數。+0800:東八區 (北京時間) 偏移 +8 小時。public static DateTime ConvertFromJsDate(string jsDate) {
// 提取毫秒數 (忽略時區,因 DateTime 可指定 Kind)
var match = Regex.Match(jsDate, @"\((\d+)");
if (!match.Success) throw new FormatException("Invalid JS Date format");
long unixMs = long.Parse(match.Groups[1].Value);
DateTime utc = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)
.AddMilliseconds(unixMs);
// 返回 UTC 時間,調用端按需 .ToLocalTime() 或指定時區
return utc;
}
// 使用
var utc = ConvertFromJsDate("Date(1420335269000+0800)");
var local = utc.ToLocalTime(); // 本地時間 (若服務器在東八區即北京時間)
var china = TimeZoneInfo.ConvertTimeFromUtc(utc, TimeZoneInfo.FindSystemTimeZoneById("China Standard Time"));
DateTime utc = new DateTime(1970,1,1,0,0,0,DateTimeKind.Utc).AddMilliseconds(1420335269000);
DateTimeKind.Utc + ToLocalTime() / TimeZoneInfo 自動處理夏令時等規則。long.Parse 支持。Date.now() 返回毫秒,C# DateTimeOffset.Now.ToUnixTimeMilliseconds() 互轉。// 1420335269000 ms = 2015-01-04 01:34:29 UTC
// 東八區 = 2015-01-04 09:34:29
Console.WriteLine(utc); // 2015/1/4 1:34:29 (Kind=Utc)
Console.WriteLine(local); // 2015/1/4 9:34:29 (本地時區)
Console.WriteLine(china); // 2015/1/4 9:34:29 (強制東八區)