将某人的当地时间转换为UTC时间

Mic*_*hel 8 .net c# datetime dst

我在时区有点迷失了:)

我有以UTC时间存储的数据.服务器在荷兰,所以我们住在utc + 1(现在,在daylightavingtime,utc + 2)

现在客户说:从8月5日开始给我数据.

所以我必须从'他的时间'计算出来的时间.为此,我必须知道:

什么是你的utc偏移(我们存储在他的个人资料中,让我们说utc -6)你是在白天时间(因为那时我们必须添加+1并使utc偏移-5)

然后我的问题:

  1. 我可以问.Net框架:国家XX是否有白天时间?

  2. 我可以问.Net框架:在那个时刻的国家XXX daylightavingtime是08-05-2010T00:00:00吗?

我一直在尝试.ToLocalTime(),但是这只给了我服务器的本地时间,这不是我想要的,我想用用户的时区计算,还有在那个特定的事实时间点,如果他/她处于白天

我也看过这个VB例子:

TimeZone As TimeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById("W. Europe Standard Time") 
Dim Dated As DateTime = TimeZoneInfo.ConvertTimeToUtc(TempDate, TimeZone) 
Run Code Online (Sandbox Code Playgroud)

但是imho没有考虑到这个时区的用户是否处于daylightavingtime(dst)国家/地区.例如,这个时区的一个用户在荷兰有dst,另一个用户在另一个没有dst的国家.

Jon*_*eet 6

您无法询问有关特定国家/地区的框架- 但您可以询问特定时区.

TimeZoneInfo 确实考虑了DST.(哎呀,它没有IsDaylightSavingTime其他的方法.)如果你有两个用户,其中一个目前正在观察DST而另一个不是,那么他们不在同一时区.

如果您可以指定您正在谈论的位置,我可以尝试找出涉及的时区.(通常更容易找到Olson名称,但找到Windows ID并不是不可能的.)