我有一个在时区A中托管的ASP.NET应用程序,正在被时区B中的用户使用。有没有办法将整个Web应用程序的时区设置为B,即使托管环境在A中?我已经在web.config中设置了具有适当的uiCulture和文化值的全球化标签,它们在一周中的几天和其他本地化设置中运行良好,不幸的是它们没有调整时钟:/我能做的最简单的事情是什么实现调整所以当在应用程序中我做DataTime.Now时,我得到时区B中的当前时间而不是A. Thx。
答案 0 :(得分:3)
假设您有权进行此更改: 将机器的时区设置为B将是我的建议,假设应用程序的所有用户共享相同的时区。
否则: 存储来自Utc的时区B的偏移量并使用该组合虽然这可能会遇到围绕夏令时的问题。
答案 1 :(得分:3)
通过JavaScript Date.getTimezoneOffset()以分钟为单位从UTC获取客户端时区偏移量 通过隐藏的输入字段调用并将其传回服务器。
Serverside使用DateTime.UTCNow以UTC格式获取服务器时间。
Serverside使用DateTime.SpecifyKind根据需要在服务器本地时间和UTC之间进行转换。
答案 2 :(得分:0)
我最近不得不在我正在制作的网站中考虑观众的时区。所以我首先获得服务器的UTC时间,然后添加了查看器的时区(通过客户端脚本编写)。
然后在我的代码中,我将其用作偏移量。
同意这是一种神奇可怕的编程方式,而且根本不是简单或有效的,但这似乎是对我来说唯一的方法。