Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
区域更改时,wpf中的日期时间未更改_Wpf_Time_Timezone - Fatal编程技术网

区域更改时,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有什么关系?