如何格式化json的datetime

时间:2012-08-16 09:43:12

标签: json entity-framework

我正在使用EF来使用匿名类型查询数据库。

这里是我用于EF的代码

    public JsonResult OverdueEventsCustom()
    {
        var eventCustomOverdue = _eventCustomRepository.FindOverdueEventsCustom();
        return Json(eventCustomOverdue, JsonRequestBehavior.AllowGet);
    }


    public IQueryable<dynamic> FindOverdueEventsCustom()
    {
        DateTime dateTimeNow = DateTime.UtcNow;
        DateTime dateTomorrow = dateTimeNow.Date.AddDays(1);
        return db.EventCustoms.Where(x => x.DateTimeStart < dateTomorrow)
                    .Select(y => new { y.EventId, y.EventTitle, y.DateTimeStart});
    }

检查使用调试器我看到属性采用这种格式

Date = {16/08/2012 00:00:00}

JSON的结果是

[{
    "EventId": 1,
    "EventTitle": "Homework Math",
    "DateTimeStart": "\/Date(1345108269310)\/"
}, {
    "EventId": 4,
    "EventTitle": "Homework help with Annie",
    "DateTimeStart": "\/Date(1345108269310)\/"
}, {
    "EventId": 6,
    "EventTitle": "Physic laboratory",
    "DateTimeStart": "\/Date(1345108269310)\/"
}]

我需要这种格式的json

"DateTimeStart": "(16/08/2012)"

知道我在这里做错了吗?谢谢你的帮助

相关文章

http://www.hanselman.com/blog/OnTheNightmareThatIsJSONDatesPlusJSONNETAndASPNETWebAPI.aspx

How do I format a Microsoft JSON date?

1 个答案:

答案 0 :(得分:1)

"\/Date(1345108269310)\/"是将日期传递给javascript的正确方法。我看到它的方式,你有两个选择:

如果您没有明确需要将值作为日期,则可以将字符串传递给JSON变量,其中包含漂亮的打印日期。 有点像:

DateTimeStart: String.Format("{0: dd-MM-yyyy}", myDate)

如果您仍然需要在javascript中使用变量aa日期(例如用于计算),最简单和可读的方法是创建一个javascript函数,将所述日期转换为您想要的漂亮打印字符串(I不知道这样的功能是否已经存在。虽然创建起来并不难:

function prettyDate(date) {

    return date.getDate() + "-" + date.getMonth() + "-" + date.getFullYear();

}

我建议将它作为一个字符串从你的代码后面传递,因为它更具可读性。但这只有在你不需要使用日期时才有效。