开发者社区> 问答> 正文

如何在.NET / Sql Server中在用户本地时间发送电子邮件?

我正在编写一个程序,该程序需要每小时每小时发送一次电子邮件,但该时间对于用户而言是本地的。

假设我在不同时区有2位用户。约翰在纽约,弗雷德在洛杉矶。服务器在芝加哥。如果我想在本地用户下午6点发送电子邮件,则必须在服务器时间晚上7点发送给John,在服务器时间下午4点发送给Fred。

在.NET / Sql Server中,有什么好的方法?我已经找到了包含所有时区信息的xml文件,因此我正在考虑编写脚本以将其导入数据库,然后对其进行查询。

展开
收起
心有灵_夕 2019-12-25 21:23:42 836 0
1 条回答
写回答
取消 提交回答
  • 您有两种选择:

    将调整后的邮件操作时间存储到每个用户的数据库中。然后只需将服务器时间与存储的时间进行比较即可。为避免混乱和可移植性问题,我将所有时间都存储在UTC中。因此,在SERVER_UTC_TIME()== storedUtcTime时发送邮件。 将每个邮件操作的本地时间存储到数据库中,然后即时进行转换。当SERVER_UTC_TIME()== TO_UTC_TIME(storedLocalTime,userTimeZone)时发送邮件。 您应该决定什么对您的应用程序最有意义。例如,如果所有用户的邮寄时间始终相同,则选择选项(2)会更有意义。如果事件时间可以在用户之间甚至每个用户之间变化,那么如果您选择选项(1),则可以使开发和调试更加容易。无论哪种方式,您都需要知道用户的时区。

    *这些函数调用显然是伪的,因为我不知道它们在T-SQL中的调用,但是它们应该存在。

    2019-12-25 21:23:52
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
SQL Server在电子商务中的应用与实践 立即下载
GeoMesa on Spark SQL 立即下载
原生SQL on Hadoop引擎- Apache HAWQ 2.x最新技术解密malili 立即下载