我有一个angularJS应用程序,它执行一些基本的日历功能。编辑后,当我将时间发送回服务器时,我注意到时间不是用户输入的时间,而是用户输入的时间加上GMT偏移量。
例如,如果我在发布之前将Calendar Event写入console.log,我将看到
end: Thu May 15 2014 11:30:00 GMT-0500 (Central Daylight Time)
id: 32525
start: Thu May 15 2014 10:00:00 GMT-0500 (Central Daylight Time)
这是我在angularJS中保存事件的方法
saveEvent = function(calEvent){
console.log(calEvnt);
$http.post('http://localhost:52491/api/SimpleCalendarEvent/', calEvnt);
}
但是api控制器的post方法上的断点显示
start = May 25 2014, 3:00 PM
end = May 15 2014, 4:30 pm
这是我在api控制器上的post方法
public void Post(jsCalendarEvent calEvent)
{
//calEvent.start = calEvent.start.ToLocalTime();
//calEvent.end = calEvent.end.ToLocalTime();
SaveJsCalendarEvent cmd = new SaveJsCalendarEvent(_context);
cmd.Event = calEvent;
cmd.Execute();
}
这里是jsCalendar Event
public class jsCalendarEvent
{
public int id { get; set; }
public DateTime start { get; set; }
public DateTime end { get; set; }
}
如果取消注释
calEvent.start = calEvent.start.ToLocalTime();
calEvent.end = calEvent.end.ToLocalTime();
一切都是正确的,但这是一场等待发生的灾难。我是有人碰到过这个,知道更好的解决方法。
如果没有更多的细节,很难诊断,但是您可以考虑在jsCalendarEvent
类中使用DateTimeOffset
而不是DateTime
。