2010-11-01 78 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