【发布时间】:2020-09-16 13:53:38
【问题描述】:
我有来自服务器的日期时间。我需要根据机器区域更改那个时间。我正在使用以下代码来实现这一点,但时间没有改变。
DateTime utcTime = DateTime.SpecifyKind(DateTime.Parse(UserDateTime.ToString()), DateTimeKind.Utc);
TimeZoneInfo localZone = TimeZoneInfo.Local;
var time= TimeZoneInfo.ConvertTimeFromUtc(utcTime , localZone);
但是当我选择另一个区域时,时间并没有根据选择的区域而变化。
我期待的是,如果我将 DateTime 设为:16-09-2020 07:21 作为服务器时间,当我将机器中的区域更改为 London 时,日期必须显示为相关时间(16-09-2020 02:51)。
请指导我实现这一目标。
【问题讨论】:
-
服务器在哪个时区? UTC 和英国时间之间从来没有 5 小时。您必须知道从服务器获得的时间戳的时区才能进行转换。
-
你不应该创建一个字符串只是为了再次解析它。您的整个代码可以压缩为
var time = TimeZoneInfo.ConvertTimeFromUtc(UserDateTime, TimeZoneInfo.Local);。那是你要的吗?另外,“来自服务器”的具体含义是什么?这与 WPF 有什么关系?