让C#代码在与本地时间不同的时区运行

本文关键字:时区 运行 时间 代码 | 更新日期: 2023-09-27 18:25:52

我有一个使用XML数据的windows服务。XSD日期时间值包含来自给定时区的偏移量,因此在反序列化时,这些值将转换为本地时间。然后,windows服务将这些数据提交到数据库中。

我的问题是数据库的用户根本不关心时区。他们希望查看日期来源的当地时间的日期值。

我在想,我可以让windows服务代码在与本地服务器时间不同的时区运行,这样反序列化程序就不会将转换应用于本地时间。

  1. 这是个好主意吗
  2. 我能做到吗?到目前为止,我读到的所有内容都说不,我不能,因为.net不仅仅假设它运行的服务器的时区

让C#代码在与本地时间不同的时区运行

我不想手动将日期转换为所需日期代码中的时区。如果可能的话,我宁愿通过设置windows服务在所需时区运行–12秒前

那么,这个问题的答案是否定的。你不能将服务设置为在计算机以外的时区运行。此外,这将使这个问题与编程无关。

通常的方法是将数据库中的日期存储为UTC日期时间。

您可以使用DateTime.UtcNow.检索UTC日期

当你想使用本地时间时,你会使用DateTime。现在

此MSDN页面更深入地解释了DateTime结构日期时间结构