TimeZoneInfo从时区分钟偏移

从JavaScript我已经使用Date对象上的getTimezoneOffset方法向控制器传递了用户的客户端日期时间偏离UTC的分钟数。 现在我在服务器端有这个信息,我想从它创建一个TimeZoneInfo。 这怎么可能? 如果这不可能,那么如何使用分钟偏移将服务器端的UTC日期转换为客户端的时区?

我想从它创建一个TimeZoneInfo。 这怎么可能?

这是不可能的。 时区偏移时区不同 。 请阅读时区标签wiki ,尤其是标题为“Time Zone!= Offset”的部分。

…那么如何使用分钟偏移量将服务器端的UTC日期转换为客户端的时区?

创建一个表示该时刻的DateTimeOffset 。 例如:

 // From your database. Make sure you specify the UTC kind. DateTime utc = new DateTime(2013, 1, 1, 0, 0, 0, DateTimeKind.Utc); // From JavaScript int offsetMinutes = 420; // Don't forget to invert the sign here TimeSpan offset = TimeSpan.FromMinutes(-offsetMinutes); // The final result DateTimeOffset dto = new DateTimeOffset(utc).ToOffset(offset); 

此外,请确保您了解在JavaScript中从客户端检索的偏移量不一定是应用于数据库日期的正确偏移量。 当你得到偏移时,它必须在特定的时刻。 由于许多时区会更改夏令时的偏移量,因此您无法假设当前的偏移量适用于数据库中的任何特定值。 因此,虽然上面的代码符合您的要求,但一般来说可能仍然不是一个好主意。