将日期时间转换为 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)/
这样的结果。
您可以更改 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();
希望这有帮助!
有两种解决方案:
- 客户端:
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)
-
服务器端:
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]));