2011-06-29 93 views
1

我在網站中構建了類似聊天服務的內容,並且當用戶發送消息或接收消息時,我會在發送或接收消息時向他顯示消息。與用戶本地保存日期​​時間問題本地日期時間

我將所有消息保存在數據庫中。

現在問題出現了:託管網站的服務器在美國,一些用戶來自不同的國家,時區不同。

所以我的用戶發送的消息,他在埃及爲例,他將看到他的消息發送10小時以前不是現在,因爲他剛送:)

我想知道如何網站如Facebook ,twitter和stackoverflow解決了這個問題。

備註:
- 我不會在註冊時向用戶詢問他的時區或國家。
- 我正在使用ASP.Net MVC。
- 我使用timeago jquery插件來顯示很好的格式化日期。

回答

0

我會猜想最好的辦法是在用戶提交文本時從用戶的PC收集日期時間值。

從此,您應該能夠根據小時數差異來確定它們在哪個時區。

然後,每當您在應用程序中顯示時間戳時,加上或減去小時數的差異。

1

如果時間戳存儲爲Coordinated Universal Time (UTC),那麼您應該根據用戶的本地時區格式化數據庫中的值。

例如,假設從數據庫中的時間戳是以毫秒爲單位(如1309365893296),然後在JavaScript中,你可以做以下將其轉換爲用戶的本地時區:

var localtime = new Date(1309365893296); 
+0

我會推薦相同的解決方案。 – itsmatt

0

你需要做的是使用DateTime.UtcNow

當你去顯示時間爲用戶存儲您的時間戳,您可以使用.ToLocalTime()了你的變量將其轉換爲每個用戶的本地時區。

+0

.ToLocalTime()將返回當前服務器的本地時間,而不是用戶瀏覽器時間。 –