2017-03-25 60 views
0

我正在製作一個應用程序,用戶可以在其中發佈文章。如果日本的某個人在2017/03/25 09:00發佈文章,我應該將發佈的文章的日期和時間設置爲那個時間,還是應該將它設置爲服務器時間?如何在用戶發佈內容時在我的應用中處理時區

此外,如果美國某人進入網站並即將閱讀文章,文章應該發表什麼日期?

如果我說2017/03/25 09:00那段時間還沒有發生在美國的用戶身上,而且將來會發生在他身上,我應該什麼時候向世界另一端的人展示?

+0

保存在UTC時區的時間,並根據他們的時區的偏移從UTC時間的偏移量顯示它 –

+0

您好我計劃使用UTC時區保存到數據庫時,但我想知道世界其他地區的人會怎麼樣查看發佈時間尚未發佈的時間? –

+0

所以如果他們是UTC + 2而你是UTC-5,你會看到時間減去7小時(或者我錯過了什麼?) –

回答

0

正如我所看到的,處理時間的更一致的方式是在內部只使用UTC time(實際上非​​常類似於GMT實際,另外,php gmt *函數實際使用UTC時間),例如存儲在日期/時間中的日期/時間持久性存儲(db等)並使用用戶時區向每個用戶顯示時間。

通過這種方式,您可以保留年表,簡化設計和思考,並始終顯示對用戶有意義的時間,例如他/時區中的時間。

在您的示例中,顯示什麼時間無關緊要,因爲您將顯示唯一相關的時間,例如,它剛剛轉換爲每個用戶的時區的實際創建UTC的時間。 不要擔心,時間總是在流動,只要時間參考一致,沒有人能夠看到什麼不會發生。如果有人在他的時鐘上看到不同的時間,這並不重要,它仍然可以是同一時刻。

如果您在哪裏處理客人,您可以使用地理位置和/或瀏覽器首選項來進行有關適當時區的有根據的猜測。而且您仍然可以在視圖中允許時區切換。

這也是一種簡化模型的方法,因爲使用單個時間參考可以簡化基於時間的物體間比較,並降低未命中配置(每次到處都是單次設置)的風險。

Carbon易於與laravel一起使用,並且是使用日期/時間的便捷方式。

+0

謝謝我計劃使用UTC作爲laravel是預先配置好的,我只是混淆了什麼是顯示給訪問博客的用戶,所以你建議我顯示UTC時間發佈的時間,而不是在日本的時間,例如在日本的郵件創建者是,這是這讓我很困惑。即使我顯示UTC時間,那麼UTC時間後面的人又會看到,對他們來說,這將是未來的時間,還是我想錯了? –

+0

不,我建議你在內部使用UTC,然後在你的視圖中顯示翻譯成用戶時區的準確時間。這和說紐約時間早上6點和巴黎中午是一樣的。儘管時鐘不顯示相同的數字,但兩者在相同的實際時間發生。你向用戶顯示的是時鐘,時間就是存儲在你的數據庫中的時間。有一些功能可以在php中完成,比如從這個時區顯示時間到另一個時間,所以它很簡單。 – fab2s

+0

後續問題,如果用戶沒有登錄我的應用程序,並且我在第一次訪問時向訪問者呈現文章列表,那麼我應該向訪問者展示我不知道時區的內容?我不能使用JavaScript的功能提取時區,因爲這是他第一次訪問和JavaScript執行的第一次,併發送有關時區的數據到服務器將工作第二次訪問,只要會話持續,然後會話丟失時相同的問題。 怎麼辦? –

相關問題