C#UTC到用户本地时间

时间:2010-11-01 02:13:45

标签: c# asp.net asp.net-mvc-2 .net-4.0

我有一个用户可以发帖的网站。用户可以来自全球各地,所以当他们发布时,我将发布的日期存储为DateTime.UtcNow。我正在使用JQuery时间插件显示发布的数据类似于堆栈溢出(1分钟前等...)但我不知道如何转换到我已存储在系统中的日期到用户当地时间?这是我正在使用的:

public static MvcHtmlString ConvertToLocalTime(this HtmlHelper htmlHelper, DateTime date)
    {
        DateTime convertedDate = DateTime.SpecifyKind(DateTime.Parse(date.ToString()),DateTimeKind.Utc);
        return MvcHtmlString.Create(convertedDate.ToLocalTime().ToString());
    }

这看到将时间转换为服务器本地时间,但我需要它为用户本地时间。我究竟做错了什么?我使用的是.NET MVC 2和.NET 4.0

2 个答案:

答案 0 :(得分:10)

通常,您不会知道用户在服务器端的确切时区。而不是尝试在服务器端转换为用户的本地时间,而是以UTC格式向客户端发送时间并让客户端转换时间。只要您以完整的ISO8601格式给出时间,TimeAgo插件就会自动执行此操作:

<abbr class="timeago" title="2008-07-17T09:24:17Z">July 17, 2008</abbr>

时间戳末尾的Z很重要;这意味着UTC。

答案 1 :(得分:0)

您是否拥有当前用户的文化?如果是这样,您可以使用C# - Convert UTC/GMT time to local time

中的代码转换为自己的时区