7

C# 提供了一种通过DateTime.Now. 但问题是我的服务器在美国,当我使用时我得到美国时间DateTime.Now

由于我的用户来自世界各地,有什么方法可以在 C# 中获取特定国家/地区的当前当地时间?(我有每个用户的语言环境,所以如果我能获得每个语言环境的当前时间,那么我是安全的)

我已经看到了一种使用时区的方法,但是我必须保留时区与国家/地区的参考。

我已经搜索过,这里的大部分问题都是关于将 UTC 时间转换为本地时间,反之亦然。希望有人能够启发我。

4

2 回答 2

5

使用 UTC 时间将您的时间保存在您的服务器中(DateTime.UtcNow),然后根据用户时区,您将更改此 UTC 时间。永远不要在数据库中保存本地时间

于 2013-01-10T05:48:03.197 回答
3

只需查看TimeZoneInfo类。您应该能够通过那里转换本地时间和服务器时间,同时保持 DST(夏令时)。

DateTimeOffset newTime = TimeZoneInfo.ConvertTime(DateTimeOffset.UtcNow, TimeZoneInfo.FindSystemTimeZoneById("AppTimeZone"));

您还可以通过伟大的 Jon Skeet Noda Time找到一个开源时区实现

于 2013-01-10T05:51:21.287 回答