区域更改时,wpf中的日期时间未更改
我有日期时间,它来自服务器。我需要根据机器区域更改时间。我使用以下代码来实现这一点,但时间并没有改变区域更改时,wpf中的日期时间未更改,wpf,time,timezone,Wpf,Time,Timezone,我有日期时间,它来自服务器。我需要根据机器区域更改时间。我使用以下代码来实现这一点,但时间并没有改变 DateTime utcTime = DateTime.SpecifyKind(DateTime.Parse(UserDateTime.ToString()), DateTimeKind.Utc); TimeZoneInfo localZone = TimeZoneInfo.Local; var time= TimeZoneInfo.ConvertTimeFromUtc(utcTime ,
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转换,还有一个TimeZoneInfo.ConvertTimeFromUtc
方法。以下代码段在UTC和英国时间之间转换:
DateTime utcTime = new DateTime(2020, 9, 16, 07, 21, 00);
DateTime londonTime = TimeZoneInfo.ConvertTimeFromUtc(utcTime,
TimeZoneInfo.FindSystemTimeZoneById("GMT Standard Time"));
服务器在哪个时区?UTC和英国时间之间从来没有5个小时。您必须知道从服务器获取的时间戳的时区,才能转换它。您不应该创建一个字符串来再次解析它。您的整个代码可以压缩为
var time=TimeZoneInfo.ConvertTimeFromUtc(UserDateTime,TimeZoneInfo.Local)代码>。这就是你想要的吗?还有,“哪个来自服务器”的具体含义是什么?这和WPF有什么关系?