我发送2个日期范围,代表当前周的开始和结束。但是,日期的转换并不是我在服务器端所期望的。开始日期很好,但结束日期是一天,我不明白为什么?
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
{"Start":"2013-05-12T23:00:00.000Z","End":"2013-05-18T23:00:00.000Z"}
C#
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); }
}
}
答案 0 :(得分:0)
可能与moment.js
使用ISO8601
(字符串末尾的Z表示UTC),然后经过ToLocalTime()
。
答案 1 :(得分:0)
这看起来像是时区问题。我不确定你所在的地区,但看起来好像你没有考虑夏令时。确保您从客户端发送UTC日期&不是客户时区本地的。
的文档默认情况下,时刻会以当地时间分析并显示
因为它实际上只是JS中Date对象的包装器,默认情况下:
根据当地时间为今天的日期和时间创建一个JavaScript Date对象
因此,您需要告诉moment.js
使用utc parsing将您创建的日期转换为UTC,例如
moment.utc(moment().day(1).hour(0).minute(0).second(0).toDate());