我正试图确定,我应该如何在一个网络应用程序中实现本地时间。所有用户都已登录,没有匿名用户。他们需要在当地时间看到所有的时间值。
应该这样做吗?
这是该走的路吗?还是我漏掉了什么?
发布于 2009-03-13 19:58:19
不要为用户存储UTC偏移量--这不足以了解完整的时区信息。你应该储存他们的Olson时区ID。“欧洲/伦敦”。然后,考虑到历史变化、夏令节约等因素,您可以在当地时间显示任何UTC时间。
编辑:看起来TimeZoneInfo ID实际上并不是正常的Olson格式--但是只要有一些合理的东西可以显示给用户(作为一种选择),并且您可以从稍后检索区域的ID,这可能是可以的.不过,如果以后需要与其他系统进行互操作,您可能会遇到困难。
您应该向用户询问他们的时区(可能首先尝试通过JavaScript来猜测)--他们将拥有比您更多的信息。
关于这一点,您应该研究一下TimeZoneInfo类--我不能说我自己也使用过它,但这是.NET 3.5的发展方向。特别是,FindSystemTimeZoneById和GetSystemTimeZones将非常重要。
时区在一般情况下是痛苦的,但至少TimeZoneInfo比旧的TimeZone类型提供了更多的支持。
发布于 2009-03-13 19:58:51
这听起来是我最直截了当的方法。我能看到的唯一的错误是一些地区(比如印第安纳州的部分地区和亚利桑那州的所有地区)不配合夏时制,所以你必须采取额外的预防措施,为它们显示正确的时间。
https://stackoverflow.com/questions/644342
复制相似问题