Sac*_*nth 9 javascript c# timezone datetime asp.net-mvc-4
从JavaScript我已经传递给控制器,使用对象getTimezoneOffset上的方法将用户的客户端日期时间从UTC偏移的分钟数Date.现在我在服务器端有这个信息,我想从它创建一个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);
Run Code Online (Sandbox Code Playgroud)
此外,请确保您了解在JavaScript中从客户端检索的偏移量不一定是应用于数据库日期的正确偏移量.当你得到偏移时,它必须在特定的时刻.由于许多时区会更改夏令时的偏移量,因此您无法假设当前的偏移量适用于数据库中的任何特定值.因此,虽然上面的代码符合您的要求,但一般来说可能仍然不是一个好主意.