Я работаю над веб-приложением, которое использует календарь.Когда я создаю событие календаря и выбираю время начала 10:00, оно сохраняется как 09:00 (я нахожусь в Великобритании, и сейчас у нас UTC + 1, и я думаю, что это разница).
Я хотел бы знать лучший способ справиться с этим и убедиться, что пользователь из любого часового пояса выбирает в календаре 10:00 утра, что 10:00 утра записывается в базу данных.
Здесьсоответствующие биты кода. Меня особенно интересуют переменные Start
и Finish
, которые оба являются типами данных Datetime:
Это 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 утра, то какое время сохраняется?