当前位置: 首页 > 面试题库 >

ASP.NET MVC JsonResult日期格式

翟柏
2023-03-14
问题内容

我有一个控制器操作,可以有效地简单返回模型的JsonResult。因此,在我的方法中,我有以下内容:

return new JsonResult(myModel);

除一个问题外,此方法效果很好。模型中有一个date属性,它似乎在Json结果中返回,如下所示:

"\/Date(1239018869048)\/"

我应该如何处理日期,以便以所需的格式返回日期?或者如何在脚本中处理上面的这种格式?


问题答案:

只是为了扩展casperOne的答案。

JSON规范并不考虑日期值。MS必须打个电话,他们选择的路径是利用字符串的javascript表示形式的一个小技巧:字符串文字“/”与“ \ /”相同,并且字符串文字 永远不会 序列化为“ \ /”(即使“ \ /”也必须映射到“ \\ /”)。

JSON的痛处之一是缺少日期/时间文字。许多人在初次遇到JSON时会感到惊讶和失望。对于缺少日期/时间文字的简单解释(是否可以安慰)是JavaScript从未使用过:在JavaScript中对日期和时间值的支持完全通过Date对象提供。因此,大多数使用JSON作为数据格式的应用程序通常倾向于使用字符串或数字来表示日期和时间值。如果使用字符串,通常可以期望它采用ISO
8601格式。如果改用数字,则该值通常是指自纪元以来的世界标准时间(UTC)的毫秒数,其中纪元定义为1970年1月1日午夜(UTC)。再次,这仅是约定,并非JSON标准的一部分。如果要与另一个应用程序交换数据,则需要检查其文档以查看其如何在JSON文字中编码日期和时间值。例如,Microsoft的ASP.NET
AJAX都不使用所描述的约定。而是将.NET DateTime值编码为JSON字符串,其中字符串的内容为/
Date(ticks)/,而ticks表示自历元(UTC)以来的毫秒数。因此,1989年11月29日上午4:55:30,以UTC编码为“ \ /
Date(628318530718)\ /”。NET AJAX均不使用所描述的约定。而是将.NET
DateTime值编码为JSON字符串,其中字符串的内容为/
Date(ticks)/,而ticks表示自历元(UTC)以来的毫秒数。因此,1989年11月29日上午4:55:30,以UTC编码为“ \ /
Date(628318530718)\ /”。NET AJAX均不使用所描述的约定。而是将.NET
DateTime值编码为JSON字符串,其中字符串的内容为/
Date(ticks)/,而ticks表示自历元(UTC)以来的毫秒数。因此,1989年11月29日上午4:55:30,以UTC编码为“ \ /
Date(628318530718)\ /”。


一个解决方案是将其解析出来:

value = new Date(parseInt(value.replace("/Date(", "").replace(")/",""), 10));

但是,我听说有一个设置可以让序列化程序DateTime使用new Date(xxx)语法输出对象。我会尝试将其挖掘出来。

的第二个参数JSON.parse()接受一个reviver函数,该函数规定在返回之前原始值是如何产生的。

这是日期的示例:

var parsed = JSON.parse(data, function(key, value) {
  if (typeof value === 'string') {
    var d = /\/Date\((\d*)\)\//.exec(value);
    return (d) ? new Date(+d[1]) : value;
  }
  return value;
});


 类似资料:
  • 设定年月日的排列顺序。

  • 我想在获得,和。 这是一条漫长的道路: 我的问题:如何将最后一部分压缩到函数? 我想归档的内容: p/s:的含义与标准数字格式字符串相同。像C#语法:

  • 我正在尝试将DatePicker日期格式化为简单的数据格式(“yyyy-MM-dd HH: mm: ss Z”)。有人告诉我,我需要使用简单的数据格式将其解析为日期对象-简单的数据格式(“yyyy-MM-dd”),然后将其格式化为我需要的内容,如下所示。但是,我在尝试捕捉块中收到错误“重复局部变量eDate”。任何专家都可以查看我的代码并提出建议吗? 已更新

  • 如何在转换为“YYYY-Mon-DD”后为今天日期添加一天。 注意到一些类在J2ME中不能工作,比如Simpledateformat类。

  • 问题内容: 我想格式化为。我已经尝试了以下步骤。 但我低于例外。 我该怎么办? 问题答案: 在这里,这有效: 在您的第一个样式中删除多余的“ T” 第二种格式不正确,应为dd-MMM-yyyy。 看看SimpleDateFormat的Javadoc

  • 问题内容: 具有String str“ May 23 2011 12:20:00”,想要将其转换为这样的日期: 它始终为我提供ParseException Unparsable日期格式:“ May 23 2011 12:20:00”。 寻找类似的问题,似乎一切正确。 怎么了? 问题答案: 如果您的VM的默认语言环境不是英语,则可能需要另外指定 Locale :

  • 问题内容: 当我创建一个表并在mysql中创建类型为date的字段时,它会像0000-00-00一样存储日期。可以将格式更改为“ dm-Y”吗? 问题答案: 转到MySQL参考-10.5。数据类型存储要求 搜索: 日期和时间类型的存储要求 日期在内部存储为 但是,如果您选择 显示 日期列,则必须以 某种 方式 显示 它,因此它会以0000-00-00的形式出现。它 不会 以该特定格式存储为char

  • 我正在使用jquery datepicker,我想设置最小日期和最大日期来显示日期。我需要允许用户在最小和最大范围内选择日期。和dateformat也需要根据用户区域设置。 我有2个日期字段开始日期和结束日期。 但上面的代码在另一个本地国家/地区不能正常工作....它总是选择我的系统日期格式“MM/DD/YYYY”。 所以我尝试设置日期的格式var dateFormat=“dd.mm.yyyy”;