gpt4 book ai didi

c# - 如何表示当前的英国时间?

转载 作者:太空狗 更新时间:2023-10-29 17:34:37 24 4
gpt4 key购买 nike

我在服务器和客户端之间转换日期时遇到问题,这两个服务器和客户端都在德国运行。客户端计算机上的区域设置可以设置为英国或德国。我从服务器收到一个 CET 格式的日期,我需要在 UI 上将这个时间表示为英国时间。例如,从服务器收到的时间 01/07/2010 01:00:00 在 UI 上应该表示为 01/07/2010 00:00:00。我为此编写了一个转换器,但是在运行时出现了 2 小时的时差。下面是代码,你能帮忙吗?

public class LocalToGmtConverter : IDateConverter
{
private readonly TimeZoneInfo timeZoneInfo;

public LocalToGmtConverter()
: this(TimeZoneInfo.Local)
{

}
public LocalToGmtConverter(TimeZoneInfo timeZoneInfo)
{
this.timeZoneInfo = timeZoneInfo;
}

public DateTime Convert(DateTime localDate)
{
var utcKind = DateTime.SpecifyKind(localDate, DateTimeKind.Utc);
return utcKind;
}

public DateTime ConvertBack(object fromServer)
{
DateTime serverDate = (DateTime)fromServer;

var utcOffset = timeZoneInfo.GetUtcOffset(serverDate);

var uiTime = serverDate- utcOffset;

return uiTime;

}
}

最佳答案

我认为您正在转换为 UTC(而不是英国)时间。由于中欧仍然是夏令时(如果温度另有说明的话),到 10 月 31 日时差 +2 小时。

如果您知道要从德国转换为英国(即夏季从 CEST 转换为 BST,冬季从 CET 转换为 GMT),为什么不减去 1 小时呢?

如果你想要英国的时区信息,你可以使用

var britishZone = TimeZoneInfo.FindSystemTimeZoneById("GMT Standard Time");

然后你可以使用

var newDate = TimeZoneInfo.ConvertTime(serverDate, TimeZoneInfo.Local, britishZone);

关于c# - 如何表示当前的英国时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4034923/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com