2009-10-20 31 views
3

我正在編寫一個Web應用程序,我想在用戶的本地時間在頁面上顯示時間戳。似乎有幾種方法可以做到這一點,但不明白什麼是一種好方法。如何在Web應用程序中顯示瀏覽器的本地時間

  1. 從IP地址使用地理位置來獲取時區 - 這看起來像一個很大的開銷。
  2. 使用JavaScript來最終呈現頁面上的日期時間 - 這看起來像很多複雜的客戶端JavaScript。
  3. 使用JavaScript從用戶的偏好中獲取時區和區域並將其保存在cookie中。服務器然後可以使用它來格式化日期。服務器端代碼是很好的,但似乎沒有很多好方法來獲得這第一頁加載。
  4. http請求標頭的任何選項?哪個?跨瀏覽器的可靠性如何?

有什麼好的方法來實現這個建議?

+0

有人知道StackOverflow是如何做到的。它似乎工作得很好。他們似乎沒有使用JavaScript,並且他們似乎沒有在初始頁面加載時向服務器發送任何內容,這將允許服務器推斷時區。這只是離開GeoIP的東西。 – 2009-10-22 02:05:01

+0

我最終通過顯示相對時間而不是實際時間戳來實現此目的。即'4小時前'。 – 2009-11-01 22:08:14

回答

0

1)是的,它是開銷。但是您可以在每個會話中獲取一次,然後存儲偏移量。

2)JavaScript顯示日期不是很複雜。看看Date對象。

我會做一個猜測在用戶的時區從他的電腦本地時區(使用JS),然後存儲。我也會允許他們改變你的網頁應用程序偏好的偏移量。

1

#2不是很複雜,您甚至可以使用類似http://ejohn.org/blog/javascript-pretty-date/的東西來顯示本網站上的時間(「2小時前」)。

如果您完全反對這一觀點,可以根據JS時間進行猜測(似乎不像IP猜測那樣容易出錯),並讓用戶改變它。

2

試試看我的timeago jquery plugin。它將UTC時間戳轉換爲模糊時間短語(例如「約2小時前」)。

你輸出HTML這樣的:

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

和插件輪流到這一點是這樣的:用一個小的jQuery這樣

<abbr class="timeago" title="July 17, 2008">about a year ago</abbr> 

jQuery(document).ready(function() { 
    jQuery('abbr.timeago').timeago(); 
}); 
相關問題