我需要从本地时间ut UTC转换现有(日期时间字段)数据库.
这些值将广告日期时间存储在服务器上,时区为CET(+1)(夏令时+2).选择我使用的数据时UNIX_TIMESTAMP(),它会神奇地补偿所有内容,即时区转移和dst(如果我已经正确阅读了文档).
我正在将数据库移动到以UTC为系统时间的新服务器.
简单地减去-1 H将不起作用,因为夏季时间为+2.
有什么想法聪明地做到这一点?(使用sql或一些脚本lang)
我在会话中将用户的时区存储为小数.例如,如果用户在EST时区,我就有
UserTimeZone = -5.00;
Run Code Online (Sandbox Code Playgroud)
数据库中的数据以UTC格式存储,因此我想计算该用户当天的开始和结束时间,以便当用户想要特定日期的数据时,记录会按时区进行调整.
这就是我正在做的事情:
DateTime StartDate = DateTime.Now.ToUniversalTime();
StartDate = StartDate.AddHours((double)UserTimeZone);
StartDate = StartDate.Date;
StartDate = StartDate.AddHours((double)UserTimeZone);
DateTime EndDate = StartDate.AddHours(24);
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是,这不考虑夏令时,所以即使考虑到EST时间比UTC晚了5个小时,目前由于夏令时的变化,它实际上落后于UTC 4小时.
你有什么建议吗?谢谢.