【问题标题】:Difficulty with Conversion of Date Time to JSON data将日期时间转换为 JSON 数据的困难
【发布时间】:2013-10-15 09:25:24
【问题描述】:

我正在尝试将list<T> 转换为 JSON 数据,然后绑定到 Jqgrid。

问题是列表集合包含作为日期时间的列之一。

当我看到生成的 JSON 响应时,日期时间没有正确序列化。它是这样来的:

 /Date(1267408935000)/

当列表集合包含日期时间列时如何正确将其转换为 JSON 数据。

请帮忙..

【问题讨论】:

  • 你希望他的json日期如何格式化?
  • 您使用哪个版本的 jqGrid?如果你使用formatter: "data",那么很多最新版本的jqGrid都会自动进行相应的转换。
  • @Oleg.i 正在使用最新版本的 JqGrid。
  • @Sam Leach 我希望将其转换为 .NET 日期格式

标签: c# asp.net-mvc json jqgrid


【解决方案1】:

如果你在colModel中对应的列定义使用formatter: "date",那么jqGrid会自动进行对应的转换。只有当您使用一些非常旧版本的 jqGrid 时才会出现问题(参见 documentation,其中描述了从 jqGrid 3.8.2 开始引入了相应的支持)。

【讨论】:

  • @Oleg.我试着把格式化程序:“数据”。但是,日期时间仍然没有正确显示。
  • @Avinash:抱歉输入错误。应该使用formatter:"date" 而不是formatter:"data"。我修正了答案的文字。
  • @Oleg..我只得到日期..是否有可能获得与 .net 日期时间相同的格式。有没有办法指定格式..
  • @Avinash:您应该使用newformat 指定您需要向用户显示的日期格式。例如formatoptions: {newformat: "n/j/Y g:i:s A"}formatoptions: {newformat: "ISO8601Long"}。我不确定您所在国家/地区通常使用哪种日期格式。
  • @Oleg..Perfect..正是我想要的格式..再次感谢
【解决方案2】:

当您说它“未正确序列化”时 - 我觉得这没问题。这是 JSON 日期的一种格式,来自 Javascript Date 构造函数,将“自 Unix 纪元以来的毫秒数”作为参数。例如,您给出的值是 2010 年 3 月 1 日 02:02:15 UTC。

期望 Javascript 反序列化这些数据绝对没问题 - 但当然不一定是这种情况......如果它真的给你带来了问题,请阅读 Scott Hanselman's blog post about JSON date/time formats - 特别是,它解释了如何将 JSON 格式化程序换成 Json.NET,它默认使用 ISO-8601 格式。

【讨论】:

    【解决方案3】:

    使用 string 属性而不是 DateTime 创建类。

    public class MyJsonModel
    {
       public string DateTimeString { get;set; }
    }
    
    var model = new MyJsonModel();
    model.DateTimeString = DateTime.Now.ToString("MM-dd-yyyy"); //Any format you like
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-20
      • 1970-01-01
      • 2013-09-22
      • 2019-06-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多