【问题标题】:Using TimeZones on website using ASP.Net 3.5 / SQL Server 2005在使用 ASP.Net 3.5 / SQL Server 2005 的网站上使用 TimeZones
【发布时间】:2010-10-13 06:15:52
【问题描述】:

我正在尝试确定我应该如何在网络应用程序中实现本地时间。所有用户都已登录,没有匿名用户。他们需要查看本地时间的所有时间值。

这是应该怎么做的吗?

  1. 所有 DateTime 值都在数据库中保存为 UTC 时间
  2. 每个用户的个人资料中都存储了一个 UTC-Offset 值
  3. 显示日期时间值时,我从数据库中获取值,并应用用户偏移量。

这是要走的路吗?还是我错过了什么?

【问题讨论】:

    标签: asp.net sql-server .net-3.5 timezone utc


    【解决方案1】:

    不要为用户存储 UTC 偏移量 - 这不足以了解完整的时区信息。您应该存储他们的Olson time zone ID,例如“欧洲/伦敦”。然后您可以在本地时间显示任何 UTC 时间,同时考虑历史变化、夏令时等。

    编辑:看起来TimeZoneInfo ID 实际上不是正常的 Olson 格式 - 但只要有一些合理的东西可以显示给用户(作为选择),并且你可以检索区域的 ID以后可能没问题了……不过以后需要和其他系统互操作可能会有困难。

    您应该询问用户他们的时区(可能首先尝试通过 JavaScript 猜测它) - 他们将获得比您更多的信息。

    您应该调查TimeZoneInfo 类以了解更多信息 - 我不能说我自己使用过很多,但这是从 .NET 3.5 开始的方式。特别是,FindSystemTimeZoneByIdGetSystemTimeZones 将很重要。

    一般来说时区很麻烦,但至少TimeZoneInfo 比旧的TimeZone 类型提供了更多的支持。

    【讨论】:

    • 世界应该有一种语言,一种时间,一种用于测量东西的系统等等......叹息! ;) 很棒的帖子,乔恩。
    【解决方案2】:

    这听起来对我来说是最直接的方法。我能看到的唯一失误是某些地区(比如印第安纳州的部分地区,我认为整个亚利桑那州)不配合夏令时,所以你必须采取额外的预防措施,为他们显示正确的时间。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多