You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.Net MVC转JavaScript的日期格式解析及Date对象转换方法咨询

关于ASP.NET序列化日期格式的转换方案

嘿,你遇到的/Date(1521617700000)/格式,是ASP.NET传统JSON序列化的日期格式——它是把.NET里的DateTime对象,转成了以/Date()包裹的毫秒时间戳,括号里的数字是从1970年1月1日UTC开始计算的毫秒数,本质就是Unix时间戳的毫秒版。

下面给你两种解决思路,按需选择:

1. 前端直接转换现有格式

如果没法改动后端代码,你可以在前端写个小工具函数,提取出里面的毫秒数,再转换成JS的Date对象:

// 定义转换函数
function parseAspNetDate(dateString) {
  // 用正则提取括号内的数字部分
  const timestampMatch = dateString.match(/\d+/);
  if (!timestampMatch) {
    throw new Error("Invalid ASP.NET date format");
  }
  // 转成整数后生成Date对象
  return new Date(parseInt(timestampMatch[0], 10));
}

// 处理你的TimerEvents数组
TimerEvents.forEach(event => {
  // 把EventTime转换成Date对象
  event.EventTime = parseAspNetDate(event.EventTime);
  // 如果你需要getTime()的结果,直接调用就行
  const countDownDate = event.EventTime.getTime();
  // 这里可以做后续的倒计时逻辑
});

2. 后端修改序列化格式(更推荐)

如果有权限改动后端代码,建议直接把日期序列化成ISO 8601标准格式(比如2018-03-21T12:15:00Z),这种格式可以被JavaScript的Date构造函数直接识别,不用额外转换。

在ASP.NET中,你可以通过配置JSON序列化器来实现:

  • 如果你用的是Newtonsoft.Json(Json.NET),可以在配置里设置:
    JsonSerializerSettings settings = new JsonSerializerSettings();
    settings.DateFormatHandling = DateFormatHandling.IsoDateFormat;
    // 序列化时使用这个配置
    string json = JsonConvert.SerializeObject(Model.PendingTimerEvents, settings);
    
  • 如果你用的是ASP.NET Core的System.Text.Json,可以这样配置:
    services.AddControllers()
            .AddJsonOptions(options =>
            {
                // 设置日期格式为ISO 8601
                options.JsonSerializerOptions.Converters.Add(new JsonStringEnumConverter());
                options.JsonSerializerOptions.Converters.Add(new DateTimeConverter());
            });
    
    (具体配置可以根据你的.NET版本调整,核心是让日期输出为ISO标准格式)

这样后端返回的日期字符串,前端直接new Date(event.EventTime)就能得到正确的Date对象,代码更简洁,也更符合JSON的通用规范。

内容的提问来源于stack exchange,提问作者chuckd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:31:50