簡體   English   中英

如何檢測客戶端的時區?

[英]How to detect the timezone of a client?

如何在jsp中獲取客戶端/請求時區?

不幸的是,此信息未在 HTTP 標頭中傳遞。

通常你需要配合 JavaScript 來為你獲取它。
網上到處都是例子,這里是一個http://www.coderanch.com/t/486127/JSP/java/Query-timezone

您無法獲得時區,但您可以通過 javascript 從客戶端獲取當前時間,然后回傳。 在服務器端,您可以將該時間轉換為 GMT/UTC。 UTC 顯示時區。

如果您只需要本地時區以便向用戶顯示本地時間,我建議您使用 UTC 表示服務中的所有時間,並使用Moment.js在瀏覽器中將它們呈現為本地時間。

我的一般規則是在任何地方處理和存儲 UTC 時間,除了在與用戶的接口處,您在那里轉換為/從本地時間。 UTC 的優勢在於您永遠不必擔心夏令時調整。

請注意,如果您想顯示某些內容的年齡(例如“3 小時前發布”),您只需將 UTC 時間戳與當前 UTC 時間進行比較; 根本不需要轉換為當地時間。

對我來說最好的解決方案是將日期/時間作為字符串發送,然后用服務器的時區解析以獲得時間戳。 時間戳始終是 UTC(或應該是),因此您不需要客戶端的時區。

例如,發送“10/07/2018 12:45”可以解析為:

SimpleDateFormat oD = new SimpleDateFormat();
oD.applyPattern("dd/MM/yyyy HH:mm");
oD.setTimeZone(TimeZone.getDefault()); // ;)
Date oDate = oD.parse(request.getParameter("time"));

顯然,您可以設置特定的日期/時間格式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM