[英]How to get current date based on time zone or locale, or user preference?
如果我的Web應用程序部署在美國,則無論客戶所在的國家/地區如何,我都會獲得美國時間。 但是,如果客戶在印度,則應該使用時區,語言環境或用戶偏好來獲取印度時間。 我該怎么辦?
Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("US/Mountain"), Locale.US);
System.out.println(calendar.getTime());
輸出:Fri Jul 02 12:15:35 IST 2010在這里,我正在獲取IST時間。 但是我需要美國/山脈的時間。
您正在打印calendar.getTime()
,它返回一個java.util.Date
並且Date.toString()
使用默認時區。 (A java.util.Date
不具有相關聯的時區或區域)。
如果要控制格式,請使用帶有適當語言環境的java.text.DateFormat
。
另外,也可以使用Joda Time ,這是更適合的日期和時間API。
我認為您的問題是如何獲取客戶端的本地時間,而不是使用客戶端日期格式來格式化服務器時間。
在這種情況下,應該在創建日歷時使用客戶端的語言環境,而不是對其進行硬編碼-這會將絕對時間(自1970年1月1日以來的毫秒數)轉換為適當的時區。
您可以使用ServletRequest.getLocale()確定客戶端首選的語言環境,
希望這可以幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.