C# 从JSON转换的日期不正确

C# 从JSON转换的日期不正确,c#,asp.net-mvc,C#,Asp.net Mvc,我发送两个日期范围,代表本周的开始和结束。然而,日期的转换并不是我在服务器端所期望的。开始日期很好,但结束日期是一天,我不太明白为什么 Console.log输出 Date {Mon May 13 2013 00:00:00 GMT+0100 (GMT Daylight Time)} Date {Sun May 19 2013 23:59:59 GMT+0100 (GMT Daylight Time)} 创建上述输出的JS var startOfWeek = moment().day(1).

我发送两个日期范围,代表本周的开始和结束。然而,日期的转换并不是我在服务器端所期望的。开始日期很好,但结束日期是一天,我不太明白为什么

Console.log输出

Date {Mon May 13 2013 00:00:00 GMT+0100 (GMT Daylight Time)} 
Date {Sun May 19 2013 23:59:59 GMT+0100 (GMT Daylight Time)}
创建上述输出的JS

var startOfWeek = moment().day(1).hour(0).minute(0).second(0).toDate()
var endOfWeek = moment().day(7).hour(23).minute(59).second(59).toDate()
console.log(startOfWeek, endOfWeek)
JSON

C#

控制器

public HttpResponseMessage GetAllCampaignsByDate(DateRange _dateRange)
{
}
模型


这可能与
moment.js
使用(字符串末尾的Z表示UTC)然后执行
ToLocalTime()

有关。这看起来像是时区问题。我不确定您使用的是哪种语言环境,但似乎您没有考虑DST。确保您从客户端发送UTC日期&而不是客户端时区的本地日期

查看文档中的

默认情况下,力矩以本地时间解析和显示

因为它实际上只是JS中对象的包装器,默认情况下:

根据本地时间为今天的日期和时间创建JavaScript日期对象

因此,您需要告诉
moment.js
使用例如


您的结束日期是
{19/05/2013 23:59:59}
?为了澄清,您将日期作为JS日期对象而不是字符串传递给服务器?服务器端的结束日期应在星期日19日23:59:59结束,不是18号星期六。是的,它们是日期对象。@user1883004您的JSON文本说它将日期作为18号发送。如果是这样,那么问题在于如何生成JSON(因此我的问题)。
Start: {13/05/2013 00:00:00}
End: {18/05/2013 23:59:59}
public HttpResponseMessage GetAllCampaignsByDate(DateRange _dateRange)
{
}
public class DateRange
{
    private DateTime m_start;
    private DateTime m_end;

    public DateTime Start
    {
        get{ return m_start; }
        set { m_start = value.ToLocalTime(); }
    }

    public DateTime End
    {
        get { return m_end; }
        set { m_end = value.ToLocalTime().AddSeconds(-1); }
    }
}
moment.utc(moment().day(1).hour(0).minute(0).second(0).toDate());