C# UTC转换为用户本地时间

5

我有一个网站,用户可以发布帖子。用户来自世界各地,因此当他们发布时,我将发布日期存储为DateTime.UtcNow。我正在使用JQuery时间插件来显示与Stack Overflow类似的发布日期(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个回答

10

一般情况下,您在服务器端不会知道用户的确切时区。与其试图在服务器端转换为用户的本地时间,不如将时间以UTC格式发送到客户端,并由客户端进行转换。只要您向TimeAgo插件提供完整的ISO8601格式时间,它就会自动执行此操作:

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

时间戳末尾的 Z 很重要;它表示该时间是协调世界时。


谢谢帮助!我正在使用AJAX进行发布,想知道TimeAgo是否与.Live兼容? - Paul
8
有趣的事实 - 后面的Z字母是赋予其通俗名字"Zulu时间"的原因。 - MattDavey

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接