不同国家的c#和当前当地时间

本文关键字:当地时间 国家 | 更新日期: 2023-09-27 17:51:07

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

时得到的是美国时间

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

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

我已经搜索过了,这里的大多数问题是关于将UTC时间转换为本地时间,反之亦然。希望有人能指点一下。

不同国家的c#和当前当地时间

节省您的时间在您的服务器使用UTC时间(DateTime.UtcNow),然后根据用户的时区,你会改变这个UTC时间。永远不要在数据库中保存本地时间

看看TimeZoneInfo类。您应该能够在保持DST(日光节约时间)的同时从本地时间转换到服务器时间。

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

你也可以找到一个开源的时区实现由一个伟大的Jon Skeet Noda Time