我在使用日历的网络应用上工作。当我创建日历活动并选择上午10:00的开始时间时,该事件将保存为上午9:00(我在英国,我们目前是UTC + 1,我认为这是差异。
我想知道处理此问题的最佳方法,并确保来自任何时区的用户选择日历上午10:00,将上午10:00写入数据库。
以下是相关的代码位。我特别感兴趣的是Start
和Finish
变量,它们都是日期数据类型:
这是捕捉事件创建的Javascript:
eventDrop: function (calEvent, dayDelta, minuteDelta, allDay, revertFunc) {
var event = {};
event.EventID = calEvent.eventid;
event.StatusString = "Update";
event.CustomerID = calEvent.customerid;
event.ProductID = calEvent.productid;
event.Title = calEvent.title;
event.Start = new Date(calEvent.start.format());
event.Finish = new Date(calEvent.end.format());
event.EventNote = calEvent.eventNote;
event.ProductValue = calEvent.ProductValue;
传递给SQL处理程序
SqlCommand cmd = new SqlCommand();
cmd.CommandType = CommandType.StoredProcedure;
cmd.Connection = m_Connection;
cmd.CommandText = "usp_ATP_Calendar_InsertUpdateEvent";
[...other params...]
cmd.Parameters.AddWithValue("@Start", eve.Start);
cmd.Parameters.AddWithValue("@Finish", eve.Finish);
cmd.Parameters.AddWithValue("@EventNote", eve.EventNote);
cmd.ExecuteNonQuery();
我已经向网页添加了一个警报,当保存事件时,该警报只会event.Start.toString()
触发。它为此示例显示了这一点:
所以我认为10:00 + 0100相当于上午9:00,这就是为什么我的活动被一个不同的'时间。任何人都可以建议最好的方法来处理这个问题,并且可能提供一些示例代码,以便用户在上午10:00丢弃事件时,这是存储的时间吗?