javascript - C# DateTime - 使用 fullcalendar.io 处理时区的最佳方法?
问题描述
我正在开发一个使用日历的网络应用程序。当我创建一个日历事件并选择上午 10:00 的开始时间时,该事件将保存为上午 09:00(我位于英国,目前我们是 UTC+1,我认为这是造成差异的原因。
我想知道处理这个问题的最佳方法,并确保来自任何时区的用户在日历上选择上午 10:00,该上午 10:00 被写入数据库。
这是相关的代码位。我对整个都是 Datetime 数据类型的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 放弃一个事件,那就是存储的时间?
解决方案
推荐阅读
- go - envconfig.Process() 有什么作用
- android - 连接到本地数据库的 Kivy 应用程序 (android)
- html - 为什么在 HTML 模板中我得到额外的空白?
- php - TCPDF 对 base64 图像有限制吗?
- google-maps - 谷歌地图编码折线不显示
- sql - SQL 将值应用于后续行
- python - 计算重复(但唯一的记录)+ 连续记录
- node.js - 使用 spyOn 和 Jest 模拟 AWS SNS 发布调用
- python - 搜索 Windows 资源管理器
- python - 从 10 个不同文件中获取字符串后的数字以使用 python 构建向量