C# 提供了一种通过DateTime.Now
. 但问题是我的服务器在美国,当我使用时我得到美国时间DateTime.Now
由于我的用户来自世界各地,有什么方法可以在 C# 中获取特定国家/地区的当前当地时间?(我有每个用户的语言环境,所以如果我能获得每个语言环境的当前时间,那么我是安全的)
我已经看到了一种使用时区的方法,但是我必须保留时区与国家/地区的参考。
我已经搜索过,这里的大部分问题都是关于将 UTC 时间转换为本地时间,反之亦然。希望有人能够启发我。
C# 提供了一种通过DateTime.Now
. 但问题是我的服务器在美国,当我使用时我得到美国时间DateTime.Now
由于我的用户来自世界各地,有什么方法可以在 C# 中获取特定国家/地区的当前当地时间?(我有每个用户的语言环境,所以如果我能获得每个语言环境的当前时间,那么我是安全的)
我已经看到了一种使用时区的方法,但是我必须保留时区与国家/地区的参考。
我已经搜索过,这里的大部分问题都是关于将 UTC 时间转换为本地时间,反之亦然。希望有人能够启发我。
使用 UTC 时间将您的时间保存在您的服务器中(DateTime.UtcNow)
,然后根据用户时区,您将更改此 UTC 时间。永远不要在数据库中保存本地时间
只需查看TimeZoneInfo类。您应该能够通过那里转换本地时间和服务器时间,同时保持 DST(夏令时)。
DateTimeOffset newTime = TimeZoneInfo.ConvertTime(DateTimeOffset.UtcNow, TimeZoneInfo.FindSystemTimeZoneById("AppTimeZone"));
您还可以通过伟大的 Jon Skeet Noda Time找到一个开源时区实现