将日期时间转换为 JSON 日期时间

本文关键字:日期 时间 JSON 转换 | 更新日期: 2023-09-27 18:31:28

我有一个返回日期时间字段的WebService。

我得到一个结果/Date(1379048144000)/但是

我只想1379048144000如何实现这一目标。

[WebMethod]
public DateTime GetServerDate()
{
    return DateTime.Now;
}

通过设置标头内容类型:application/json; charset=utf-8; 我得到了一个像/Date(1379048144000)/这样的结果。

将日期时间转换为 JSON 日期时间

您可以更改 WS 以返回带有 DateTime 值的 long。 要返回的值是自 Unix 纪元 (01/01/1970) 以来的毫秒数。 这可以通过扩展方法完成,DateTime如下:

public static class DateTimeExtensions
{
    ...
    private static readonly DateTime UnixEpoch = new DateTime(1970, 1, 1);
    public static long ToUnixTime(this DateTime dateTime)
    {
        return (dateTime - UnixEpoch).Ticks / TimeSpan.TicksPerMillisecond;
    }
    ...
}

您的 Web 服务方法可能如下所示:

public long GetMyDate(...)
{
    DateTime dateTime = ...;
    return dateTime.ToUnixTime();
}

with Json.NET :

string date = Newtonsoft.Json.JsonConvert.SerializeObject(DateTime.Now);    

客户端,您可以使用此函数向客户端显示正确的日期(我在我的项目中使用它):

function parseJsonDate(jsonDate) {
var offset = new Date().getTimezoneOffset() * 60000;
var parts = /'/Date'((-?'d+)([+-]'d{2})?('d{2})?.*/.exec(jsonDate);
if (parts[2] == undefined) parts[2] = 0;
if (parts[3] == undefined) parts[3] = 0;
d = new Date(+parts[1] + offset + parts[2] * 3600000 + parts[3] * 60000);
date = d.getDate() + 1;
date = date < 10 ? "0" + date : date;
mon = d.getMonth() + 1;
mon = mon < 10 ? "0" + mon : mon;
year = d.getFullYear();
return (date + "." + mon + "." + year);
};

此函数以以下格式返回正确的日期:dd.mm.yyyy,但您可以根据需要更改它。我希望我能帮助你。

在将

JSON 对象中的日期发送到 JS 时,您始终可以通过按如下方式转换日期来解决您的问题:

var myJSDate = (new Date(parseInt(obj.MyDate.substr(6)))).toJSON();

哪里是。日期 包含要设置格式的日期。

然后你会得到这样的内容:"2013-10-25T18:04:17.289Z"

您可以随时在 Chrome 控制台中通过以下方式进行检查:

(new Date()).toJSON();

希望这有帮助!

有两种解决方案:

  1. 客户端:

function ToJavaScriptDate(value) {
  var pattern = /Date'(([^)]+)')/;
  var results = pattern.exec(value);
  var dt = new Date(parseFloat(results[1]));
  return (dt.getMonth() + 1) + "/" + dt.getDate() + "/" + dt.getFullYear();
}

可能还需要将 u 转换为数据对象变量日期 = 新日期(xxx)

  1. 服务器端:

    Newtonsoft.Json.JsonConvert.SerializeObject(your_object)
    

只需这样编写即可将日期字符串转换为 JSON 格式。

date = "{" + date + "}";

尝试正则表达式:

var jsonDate = @"/Date(1379048144000)/"; 
var regex = /-?'d+/; 
var jsonDate = re.exec(jsonDate); 
var dateOriginal = new Date(parseInt(m[0]));