1

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

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

我在想我可以让 Windows 服务代码在与本地服务器时间不同的时区运行,以便反序列化器不会将转换应用到本地时间。

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

2 回答 2

2

I don't want to do a manual conversion of the date to the desired timezone in code. I would rather do it if possible by setting the windows service to run in the desired timezone – hugh 12 secs ago

The answer to this question then, is No. You can't set a service to run in a different time zone than the computer. Also that would make this question not programming-related.

于 2013-08-02T10:39:12.983 回答
1

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

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

当你想使用当地时间时,你会使用 DateTime.Now

这个 MSDN 页面更深入地解释了 DateTime 结构 DateTime Structure

于 2013-08-02T10:38:46.163 回答