如何在Web应用程序中实现时区?

时间:2009-01-27 22:38:56

标签: asp.net timezone

我想在我的网络应用程序中实现时区。我研究并看到大多数网络应用都使用GMT下拉菜单,这是指向该下拉列表的链接http://www.attackwork.com/BlogEntry/6/Time-Zone-Dropdown-Select-List/Default.aspx

然后我看到这篇文章暗示UTC是实现时区的方法。 http://aspnet.4guysfromrolla.com/articles/081507-1.aspx基本上它是说不要使用 DateTime.Now 而是使用 DateTime.UtcNow

我的问题是,

  1. 是否有UTC时区的下拉列表,就像我在GMT上显示的第一个链接一样?
  2. 我真的应该使用UTC还是GMT?

6 个答案:

答案 0 :(得分:3)

.NET 3.5提供了TimeZoneInfo类,这使您可以相对简单地使用时区填充下拉列表。 GMT在UTC和UTC于1972年1月1日正式成立之前出现。有关详细信息,请参阅this link。出于今天的目的,这两者几乎是同义词,尽管它们有不同的历史渊源。根据您的目的更好地使用任何外观和功能。

答案 1 :(得分:2)

我不确定这是否是您打算提出的问题,但在您的数据库中,您应该始终以UTC / GMT存储时间戳(正如其他人所说,它们的意思基本相同)。对于Web应用程序的每个用户,请存储时区首选项。

然后,每当您向用户显示某些内容的时间戳时,请将数据库中的UTC时间转换为用户的时区。

答案 2 :(得分:1)

GMT(格林威治标准时间)与UTC(通用协调时间)相同。这不是一个/或选择 - 使用它:)

答案 3 :(得分:0)

尽可能使用本地化设置,功能和功能。

答案 4 :(得分:0)

如果您没有针对SQL Server 2008运行或者不想将时区管理抽象到数据库,则应将所有时间存储为UTC / GMT并根据用户的配置文件设置应用时区差异,以便用户来自世界各地的人可以在当地时间看到事件的时间戳。

答案 5 :(得分:0)

UTC和GMT之间的区别可能太小了,无法在您的代码中烦恼。但是,总是在内部保存和处理时间零时区偏移是个好主意,并将其作为演示问题处理。

也可以使用JavaScript来确定用户的可能时区:检查合理靠近至日的一对Date个对象的时区偏移(即使1月1日和7月1日做出合适的近似),以获得粗时区识别。您可以随意使用此信息来确定默认时区,但允许用户对其进行更改:JavaScript无法提供足够的详细信息来选择具有国家和地区历史变化的确切时区,并且可能无法通过用户无论如何。