我正在尝试创建一个允许用户为特定日期安排活动的系统。
在服务器端,我有一个SQL作业,每天凌晨3点运行。
在客户端,用户正在选择日期选择器中的日期。
我需要确保SQL作业可以查看用户保存的日期并在用户时区中的任何一天执行操作。
我尝试过存储以下内容(粗略的C#伪代码):
DateTime scheduledDateUtc = ConvertToUTC(dateEnteredByUser.Date, usersTimezone).Date;
然后我根据SQL作业中的以下比较执行该事件:
WHERE CONVERT(DATE, scheduled_date_utc) = CONVERT(DATE, GETUTCDATE())
这在一些边缘情况下失败并且肯定是错误的,但我不知道正确的策略是什么。
此外,我不清楚我应该如何为这些边缘情况编写单元测试。
谢谢!
答案 0 :(得分:0)
您确定需要转换为UTC吗?而不是手动转换为UTC我会尝试设置它
DateTime scheduledDateUtc = DateTime.SpecifyKind(dateEnteredByUser.Value, DateTimeKind.Utc);