2012-05-08 69 views
1

我尋找那個時間轉換成字符串日曆看起來像這樣的方法:字符串與時區日曆的Android

public static Calendar stringToCalendar(String strDate, TimeZone timezone){ 
    String FORMAT_DATETIME = "yyyy-MM-dd'T'HH:mm:ss"; 
    SimpleDateFormat sdf = new SimpleDateFormat(FORMAT_DATETIME); 
    sdf.setTimeZone(timezone); 
    Date date = sdf.parse(strDate); 
    Calendar cal = Calendar.getInstance(timezone); 
    cal.setTime(date); 
    return cal; 
    } 

這上面的代碼不起作用。
例如:當我通過時間字符串'2012-05-08T09:10:10'與模式yyyy-MM-dd'T'HH:mm:ss和時區是GMT + 7,結果(從日曆對象)應該是:2012-05-08T16:10:10
問題是由於某些原因,我不想使用Joda time。那麼,我該怎麼做?

回答

2

只需使用SimpleDateFormat並在其上設置TimeZone即可。然後調用parse()方法。

編輯:


import java.text.ParseException; 
import java.text.SimpleDateFormat; 
import java.util.Calendar; 
import java.util.Date; 
import java.util.TimeZone; 

public class temp2 { 

    public static void main(String[] args) throws ParseException { 
     String s = "2012-05-08T09:10:10"; 
     Calendar cal = stringToCalendar(s, TimeZone.getTimeZone("GMT+0")); 
     SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
     sdf.setTimeZone(TimeZone.getTimeZone("GMT+7")); 
     System.err.println(sdf.format(cal.getTime())); 
    } 

    public static Calendar stringToCalendar(String strDate, TimeZone timezone) throws ParseException { 
     String FORMAT_DATETIME = "yyyy-MM-dd'T'HH:mm:ss"; 
     SimpleDateFormat sdf = new SimpleDateFormat(FORMAT_DATETIME); 
     sdf.setTimeZone(timezone); 
     Date date = sdf.parse(strDate); 
     Calendar cal = Calendar.getInstance(); 
     cal.setTime(date); 
     return cal; 
    } 

} 

輸出:

2012-05-08 16:10:10 區別在哪裏的確是7小時

+0

我已經更新我的問題,但它不起作用。 – R4j

+0

@ R4j問題是你正在做相反的事情。您要求將日期和時間從GMT + 7轉換爲您的TimeZone –

+0

謝謝,我犯了一個錯誤。我想將UTC的日期時間轉換爲我的TimeZone(GMT +7)。你可以給我一個例子嗎? – R4j