在MVC3(C#)中,将GMT DateTime转换为用户本地时间,将本地时间转换为GMT DateTime

时间:2012-07-08 23:14:04

标签: c# asp.net-mvc-3 datetime

我是MVC3和C#的新手。我将使用C#通过MVC3创建一个测试博客站点。用户可以写帖子,所以我需要存储用户发布日期时间,并希望通过当地时间显示每个其他用户的日期时间。对于这种情况,每个人都认为最好将日期时间存储在 GMT 中。

我不知道如何获取用户本地日期时间并将其转换为 GMT 并存储。 我不知道如何转换并在每个用户的本地日期时间显示存储的日期时间。

请帮帮我。请

1 个答案:

答案 0 :(得分:2)

我只能在一点上尊重COLD TOLD。如果您使用DateTime.Now,您将获得日期&运行应用服务器的计算机的时间。虽然这没关系,但在存储它时,您还需要同时存储时区。否则,转换时,您将无法知道要转换的时区。如果您将其硬编码到应用程序中,然后将其移动到不同时区的数据中心服务器,则必须更改该应用程序设置。

另一方面,如果你总是存储日期&使用DateTime.UtcNow的时间,您只需要在数据库中存储1个值。当需要将其转换为时区语言环境时,您无需访问数据库以找出最初计算信息的时区 - 它始终为UTC / GMT。

var destinationTimeZone = TimeZoneInfo.FindSystemTimeZoneById(
    "US Mountain Standard Time"); 

utc = DateTime.UtcNow;
mst = TimeZoneInfo.ConvertTimeFromUtc(utcTime, destinationTimeZone);

Console.WriteLine("UTC: " + utc.ToString("yyyy-MM-dd HH-mm-ss"));
Console.WriteLine("MST: " + mst.ToString("yyyy-MM-dd HH-mm-ss"));