我有一个用户可以发帖的网站。用户可以来自全球各地,所以当他们发布时,我将发布的日期存储为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
答案 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
中的代码转换为自己的时区