C#和当前不同国家/地区的当地时间

时间:2013-01-10 05:45:51

标签: c# date datetime cultureinfo

C#提供了一种通过DateTime.Now获取当前日期的方法。但问题是我的服务器在美国,当我使用DateTime.Now

时,我得到美国时间

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

我已经看到using Time Zone的方式,但我必须保留时区与国家/地区的参考。

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

2 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:3)

看看TimeZoneInfo课程。您应该可以在此处转换为从本地到服务器的时间,同时保持DST(夏令时)。

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

您还可以通过Great Jon Skeet Noda Time之一找到开源时区实施