2012-11-02 67 views
2

在我的應用程序用戶可以發佈評論並指定評論的過期日期時間。JS/PHP日期時間和時區,在特定日期時間到期的用戶評論

的過程很簡單:

他們選擇日期和日期被插入內部DB與由PHP在格式的註釋(Y-M-d H:S:米)。

然後當我想像評論我把每個評論JS倒計時。

倒計時是由JS從當前JS日期時間計算,直到數據庫存儲expiration_datetime CONVERTED IN JS,這是每一個評論。

所以我想知道,插入我使用PHP,然後輸出我使用JS,這將產生任何問題與時區和用戶的瀏覽器日期時間VS服務器日期時間?

在PHP

我做的:

$expiration_datetime = date('Y-m-d H:m:s');

在JS我轉換:

var expiration_datetime = new Date(<?php $expiration_datetime[0]?>,<?php $expiration_datetime[1]?>,<?php $expiration_datetime[2]?>,<?php $expiration_datetime[3]?>,<?php $expiration_datetime[4]?>,<?php $expiration_datetime[5]?>,);

所以我不知道如果JS轉換日期時間會爲用戶生產什麼樣的問題在不同的時區,最後,您建議關注或做什麼,以便使用最佳做法?

更多關於:

我在想,也許設置服務器和JS固定時區的日期和日期時間將是來到現場的所有用戶獨特的,你同意嗎?

回答

1

JavaScript Date()對象將日期存儲爲與時期(01/01/1970)相差毫秒數的偏移量,因此只需按照您建議的方式構建日期帳戶的用戶的時區。

如果您正常化已存儲在數據庫中GMT日期,那麼你可以通過皮帶和牙套的方法和用途:

var expiration_datetime = new Date(Date.UTC(
    <?php $expiration_datetime[0]?>, <?php $expiration_datetime[1]?>, 
    <?php $expiration_datetime[2]?>, <?php $expiration_datetime[3]?>, 
    <?php $expiration_datetime[4]?>, <?php $expiration_datetime[5]?>, 
)); 

其中應說明的是,最新的信息被接收的JS解析器是GMT。

+0

偉大的使用這兩個UTF的PHP和JS將是唯一的所有用戶在全球各地的權利? ..希望我能很好地理解 – sbaaaang

+0

然後..這是你描述的正確還是最好的方法? – sbaaaang

+1

是的,UTC是通用的,應該忽略時區和夏令時。 看看在W3學校的網站上的JS日期對象: http://www.w3schools.com/jsref/jsref_obj_date.asp ,因爲這包含了一套工具,可用一個合理的解釋給你將值轉換爲當地時間/從當地時間轉換。您可能也會從查看JS日期庫(例如Moment.js或XDate.js)中受益,因爲它們提供更豐富的日期處理函數(但所有這些都取決於日期要求的範圍)。 –

0

使用UNIX時間戳和使用的buildin JS日期construnctor構建從中日期:

php: time() 
js: new Date(ms) 

注:PHP函數返回秒,JS - 使用毫秒。千萬別忘了在1000上相乘

+0

你能解釋一下這樣做的好處嗎? – sbaaaang

+0

注:我不是在談論日期格式,我是在談論時區,我需要Ymd H:m:s,但是如果你對我說那個unix時間戳修復了所有與js和php datetimes有關的dubts /問題每個時區,好的! – sbaaaang

+1

Unix時間是世界時(UTC)。當你在JS中調用Date構造函數時,瀏覽器會根據客戶端時區進行班次轉換。 – Damask

相關問題