首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C# 將 JavaScript Date(1420335269000+0800) 轉換為 DateTime

     編輯:程式設計綜合問答

格式解析

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 自動處理夏令時等規則。
  • 若字符串含負號 (1970 前),long.Parse 支持。
  • JavaScript 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 (強制東八區)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved