1

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

这是应该怎么做的吗?

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

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

4

2 回答 2

7

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

编辑:看起来TimeZoneInfoID 实际上不是正常的 Olson 格式 - 但只要有一些明智的东西可以显示给用户(作为选择),并且您可以稍后检索区域的 ID,这可能是好吧...如果您以后需要与其他系统进行互操作,您可能会遇到困难。

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

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

时区一般来说是一种痛苦,但至少比旧类型TimeZoneInfo提供了更多的支持。TimeZone

于 2009-03-13T19:58:19.193 回答
0

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

于 2009-03-13T19:58:51.813 回答