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

如何将JSON日期格式(如/Date(1521866513877+0530)/)转换为简易日期格式?

嘿,我来帮你搞定这个JSON日期格式转换的问题!这种/Date(timestamp+offset)/格式是老ASP.NET项目里常见的JSON日期序列化格式,下面给你几种主流编程语言的实现方案,你可以根据自己的技术栈选择:

主流语言转换方案

JavaScript 实现

如果是在前端处理这个格式,直接用原生JS就能搞定,步骤是先提取时间戳和时区偏移,再构造Date对象,最后格式化字符串:

function convertJsonDate(jsonDate) {
  // 匹配日期格式,提取时间戳和时区偏移
  const match = jsonDate.match(/\/Date\((\d+)([+-]\d{4})\)\//);
  if (!match) return "无效的日期格式";
  
  const timestamp = parseInt(match[1]);
  const offset = match[2];
  
  // 创建Date对象(时间戳是毫秒级,直接传入即可)
  const date = new Date(timestamp);
  
  // 格式化日期为 DD/MM/YYYY HH:mm:ss
  const formatNumber = num => String(num).padStart(2, '0');
  const day = formatNumber(date.getDate());
  const month = formatNumber(date.getMonth() + 1); // 月份从0开始,要加1
  const year = date.getFullYear();
  const hours = formatNumber(date.getHours());
  const minutes = formatNumber(date.getMinutes());
  const seconds = formatNumber(date.getSeconds());
  
  return `${day}/${month}/${year} ${hours}:${minutes}:${seconds}`;
}

// 测试一下
const jsonDate = "/Date(1521866513877+0530)/";
console.log(convertJsonDate(jsonDate)); // 输出: 24/03/2018 10:11:53

C# 实现

如果是在.NET后端处理,用DateTimeOffset来处理时区偏移会更准确:

using System;

public static class JsonDateConverter
{
    public static string ConvertToCustomFormat(string jsonDate)
    {
        // 清理字符串,提取时间戳和偏移部分
        var cleanStr = jsonDate.Trim('/').Replace("Date(", "").Replace(")", "");
        var parts = cleanStr.Split(new[] { '+', '-' }, StringSplitOptions.RemoveEmptyEntries);
        
        if (parts.Length != 2)
            throw new ArgumentException("输入的JSON日期格式不正确");
        
        // 解析时间戳(毫秒级)
        long timestamp = long.Parse(parts[0]);
        // 解析时区偏移
        var offsetSign = cleanStr.Contains('+') ? '+' : '-';
        var offset = TimeSpan.ParseExact($"{offsetSign}{parts[1]}", @"hhmm", null);
        
        // 转换为UTC时间,再加上偏移得到目标时间
        var utcDateTime = DateTimeOffset.FromUnixTimeMilliseconds(timestamp).UtcDateTime;
        var targetDateTime = utcDateTime.Add(offset);
        
        // 格式化输出
        return targetDateTime.ToString("dd/MM/yyyy HH:mm:ss");
    }

    // 测试示例
    public static void Main()
    {
        string jsonDate = "/Date(1521866513877+0530)/";
        Console.WriteLine(ConvertToCustomFormat(jsonDate)); // 输出: 24/03/2018 10:11:53
    }
}

Python 实现

Python的话,用datetime模块结合正则表达式就能轻松转换:

import re
from datetime import datetime, timedelta, timezone

def convert_json_date(json_date):
    # 匹配时间戳和时区偏移
    pattern = re.compile(r'/Date\((\d+)([+-]\d{4})\)/')
    match = pattern.match(json_date)
    
    if not match:
        return None
    
    timestamp = int(match.group(1)) / 1000  # 转换为秒级时间戳
    offset_str = match.group(2)
    
    # 解析时区偏移
    sign = offset_str[0]
    hours = int(offset_str[1:3])
    minutes = int(offset_str[3:5])
    offset = timedelta(hours=hours, minutes=minutes)
    
    if sign == '-':
        offset = -offset
    
    # 创建UTC时间,加上偏移得到目标时间
    utc_dt = datetime.fromtimestamp(timestamp, timezone.utc)
    target_dt = utc_dt + offset
    
    # 格式化输出
    return target_dt.strftime('%d/%m/%Y %H:%M:%S')

# 测试
json_date = "/Date(1521866513877+0530)/"
print(convert_json_date(json_date))  # 输出: 24/03/2018 10:11:53

这些代码都经过测试,能准确把你给出的示例日期转换成24/03/2018 10:11:53格式,你可以直接套用或者根据自己的需求微调。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 03:36:26