2010-11-01 80 views
5

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

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

回答

10

中的代码将其转换为其时区。通常,您不会知道用户在服务器端的确切时区。而不是尝试转换为服务器端的用户本地时间,请将时间以UTC发送到客户端,并让客户端转换时间。只要你给它完全ISO8601格式的时间TIMEAGO插件会自动完成:

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

Z在时间戳的结束是很重要的;这意味着UTC。

+0

感谢您的帮助!我正在使用AJAX发布并想知道TimeAgo是否适用于.Live? – Paul 2010-11-02 21:56:33

+8

有趣的事实 - Z最后是它的通用名称,“祖鲁时间”:) – MattDavey 2011-04-18 10:38:15