java 多時區客戶的統一處理詳解

涉及到多國化的網站,不僅要考慮語言多國化,還要考慮時間的通用性。

 

首先,要記住: JAVA的 System CurrentTime 就是 utc 的時間。

我們的目的就是要保證服務器存的時間爲UTC時間(爲什麼要強調這句?因爲時間是客戶輸入的,比如一個搜索功能中,客戶要查詢某個時間段的數據,而數據顯示的時候是根據客戶的時區來顯示的。

 

 

分爲

服務端: 又分爲system 到 db,基本沒啥額外處理。對於程序,後端則要設置個 locale的時區,如果是多國通用,則可以根據一些客戶端信息來判斷。但比較周全的方法是可以讓用戶選擇,比如google ,phpbb 等就可以讓用戶自己選時區。這個參數主要是用來對客戶端的時區時間轉換

 

 

客戶端:

JSTL: <fmt:formatDate value="${createdTime}" pattern="yy-MM-dd HH:mm:ss" timeZone="PRC"/>

   或 <fmt:formatDate value="${displayDate}" pattern="yyyy-MM-dd" timeZone="${timeZone}"/>

 

交互:(客戶端提交時)

public static Date strToDateTime(String date,String timeZone) {

// date   爲客戶端自己填寫的當地時間
   Date d = null;
   try {
    if(date.length()>10){
     java.text.SimpleDateFormat f= new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    f.setTimeZone(TimeZone.getTimeZone(timeZone));
     d=f.parse(date);
    }else{
     java.text.SimpleDateFormat f= new java.text.SimpleDateFormat("yyyy-MM-dd");
     f.setTimeZone(TimeZone.getTimeZone(timeZone));
     d=f.parse(date);
    }
   } catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
   return d;
}

 

閒來無聊,發發代碼,互相學習。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章