我尝试实施一个事件安排,允许用户选择工作日以及开始和结束时间。我遇到了与时区有关的问题。 这是我的表(重要的一栏):
create table event (
id int not null auto_increment,
name varchar(100) not null,
repeat_event tinyint(1) default null,
every_sunday tinyint(1) default null,
every_monday tinyint(1) default null,
every_tuesday tinyint(1) default null,
every_wednesday tinyint(1) default null,
every_thursday tinyint(1) default null,
every_friday tinyint(1) default null,
every_saturday tinyint(1) default null,
start_time time null default null,
end_time time null default null,
start_date datetime null default null,
end_date datetime null default null,
)
应用程序有两种类型的事件调度:循环和非循环(根据repeat_event列,值为1或0)。 另一个过程是负责读取当天的所有事件并通知用户事件的开始或结束(我使用javascript setTimeout函数通知 - 用当前日期毫秒减去start_date毫秒)。
当repeat_event为0时,我使用start_date和end_date来存储事件日期。在这种情况下,使用datetime列(没有timezome信息)。我在这里没有问题,因为用户将同时收到通知,与时区无关。我在用户时区显示事件日期。
当repeat_event为1时,我使用每个_ ***列,start_time和end_time来存储工作日工作日和时间。
问题
如何将重复信息存储在数据库中?
例如:如果我在GMT-03:00中将活动安排在星期六的22:00 - 23:00。这不是星期六的UTC,所以列every_saturday存储"错误"。
我应该用用户时区存储这些信息吗?