将DateTime转换为JSON DateTime

我有一个返回DateTime字段的WebService。

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

我想要1379048144000我怎么能实现这一目标。

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

通过设置Header Content-Type:application / json; 字符集= UTF-8; 我有一个像/Date(1379048144000)/

您可以更改WS以使用DateTime的值返回long。 要返回的值是自Unix Epoch(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(); } 

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

 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.NET :

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

尝试正则表达式:

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

通过转换日期,您可以在将JSON对象中的日期发送到JS时始终解决您的问题,如下所示:

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

obj.Date包含您要格式化的日期。

然后你会得到这样的东西:“2013-10-25T18:04:17.289Z”

您可以通过以下方式在Chrome控制台中查看:

 (new Date()).toJSON(); 

希望这可以帮助!

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

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