如何在考虑时区的同时处理保存日期?

时间:2017-09-13 17:33:26

标签: c# sql-server date timezone

我正在尝试创建一个允许用户为特定日期安排活动的系统。

在服务器端,我有一个SQL作业,每天凌晨3点运行。

在客户端,用户正在选择日期选择器中的日期。

我需要确保SQL作业可以查看用户保存的日期并在用户时区中的任何一天执行操作。

我尝试过存储以下内容(粗略的C#伪代码):

DateTime scheduledDateUtc = ConvertToUTC(dateEnteredByUser.Date, usersTimezone).Date;

然后我根据SQL作业中的以下比较执行该事件:

WHERE CONVERT(DATE, scheduled_date_utc) = CONVERT(DATE, GETUTCDATE())

这在一些边缘情况下失败并且肯定是错误的,但我不知道正确的策略是什么。

此外,我不清楚我应该如何为这些边缘情况编写单元测试。

谢谢!

1 个答案:

答案 0 :(得分:0)

您确定需要转换为UTC吗?而不是手动转换为UTC我会尝试设置它

DateTime scheduledDateUtc = DateTime.SpecifyKind(dateEnteredByUser.Value, DateTimeKind.Utc);