将GMT日期存储在美国服务器上

时间:2012-04-25 08:48:03

标签: asp.net sql-server shared-hosting gmt

我来自英国,最近在WinHost Basic Package上部署了一个网站。

在C#中使用DateTime.Now()或在SQL中使用GETDATE()时,这些都返回GMT-8之类的内容(因为服务器托管在美国)。

我认为我在服务器上的权限有限(例如我无法更改我的SQL登录语言)。

在GMT中存储这些日期的最佳方法是什么?

3 个答案:

答案 0 :(得分:4)

使用DateTime.UtcNow并将其存储为数据库。 从数据库中读取时假设UTC并使用UK类转换为TimeZoneInfo时间。 请注意,SQL不应包含有关时区偏移的任何信息。

答案 1 :(得分:3)

在SqlServer中,使用getUtcDate()存储所有日期时间值。您可以在.NET应用程序中将其转换为所需的时区。

答案 2 :(得分:2)

描述

我认为您应该以UTC格式存储日期时间。然后,您可以使用TimezoneInfo类将其简单地转换为另一个时区。

  • DateTime.UtcNow保存到您的数据库或使用sql
  • 中的getUtcDate
  • 让用户选择他的时区并将其保存到您的数据库
  • 使用TimeZoneInfo.ConvertTimeFromUtc
  • 将您保存的UTC时间转换为用户时区

示例

TimeZoneInfo cstZone = TimeZoneInfo.FindSystemTimeZoneById(/* destination timezone (users timezone)  */);
DateTime cstTime = TimeZoneInfo.ConvertTimeFromUtc(YourDateTimeFromDatabase, cstZone);

更多信息