Javascript 解析Json编码数组中的日期
我已经构建了一个MVC站点,我正在将我的模型传递给视图,并尝试在视图中的一些javascript中使用它,使用:Javascript 解析Json编码数组中的日期,javascript,json,asp.net-mvc,datetime,Javascript,Json,Asp.net Mvc,Datetime,我已经构建了一个MVC站点,我正在将我的模型传递给视图,并尝试在视图中的一些javascript中使用它,使用: var records = @Html.Raw(Json.Encode(Model)); 我的目标是在接受对象数组作为数据源的自定义日历对象中使用这些记录。但是,数据源希望日期变量知道将约会等放置在何处。我已经读到,Json没有自己的日期格式。因此,编码返回的所有日期的格式如下: /Date(1462921200000)/ 对象似乎不接受这一点,并且视图上没有显示任何内容。在我
var records = @Html.Raw(Json.Encode(Model));
我的目标是在接受对象数组作为数据源的自定义日历对象中使用这些记录。但是,数据源希望日期变量知道将约会等放置在何处。我已经读到,Json
没有自己的日期格式。因此,编码返回的所有日期的格式如下:
/Date(1462921200000)/
对象似乎不接受这一点,并且视图上没有显示任何内容。在我读过的帖子中,他们说可以将日期解析回正确的格式,但这似乎只是针对单个值
我的问题是:有没有一种简单的方法来获取我得到的编码对象并将日期解析为正确的格式?或者我必须循环通过它们才能做到这一点
谢谢。Asp.Net MVC应用程序默认以ISO-8601格式返回日期。 您可以使用如下函数在客户端转换值:
function ConvertDate(dateString) {
return new Date(parseInt(dateString.replace("/Date(", "").replace(")/", ""), 10));
}
或者可以使用momentjs()之类的库:
免责声明:在我撰写此答案时,问题未标识为ASP.NET。我想OP是在要求他的尚未公开的框架提供一些特性。我保留了答案,因为我认为它对于在香草JavaScript中手动解码是有效的
可以使用简单的正则表达式解析该格式
var asText=“日期(146292120000)”;
var asDate=null;
var parsed=asText.match(/^Date\(\d+)$/);
if(已解析!==null){
asDate=新日期(+已解析[1]);
}
console.log(asDate)代码>警告:这个答案是自以为是的。
坚持己见的部分是:当您需要使用Json完成某些事情时,请使用
用法:
var records = @Html.JsonEncode(Model);
有关详细信息,请参阅优秀的Json.Net文档。这看起来不像原始JavaScript。您使用的是预处理器技术吗?可能是
namespace System.Web.MVC
{
public static class HtmlHelperJsonExtensions
{
public string JsonEncode(this System.Web.MVC.HtmlHelper html, object o)
{
var jsonSettings = new Newtonsoft.Json.JsonSerializerSettings()
{
// Here you can apply a LOT of formatting, as a small example regarding dates:
// 1 - formats dates as iso strings (probably what you want)
DateFormatHandling = Newtonsoft.Json.DateFormatHandling.IsoDateFormat,
// 2 - formats dates with Microsoft format (what you're experiencing)
//DateFormatHandling = Newtonsoft.Json.DateFormatHandling.MicrosoftDateFormat,
// 3 - formats date in a custom format as for DateTime.ToString(string) overload
//DateFormatString = "yyyy-MM-dd"
Formatting = Indented
};
var json = Newtonsoft.Json.JsonConvert.SerializeObject(o, jsonSettings);
return html.Raw(json);
}
}
}
var records = @Html.JsonEncode(Model);