2012-05-08 3 views
1

Я ищу способ, которые преобразуют строку времени в календаре выглядят следующим образом:Строки календарь с часовым поясом в андроиде

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: мм: сс и часовой пояс: GMT + 7, результат (из объекта Calendar) должно быть: 2012-05-08T16: 10: 10
Проблема заключается в некоторых случаях, я не хочу использовать Joda time. Итак, как я могу это сделать?

ответ

2

Просто используйте SimpleDateFormat и установите на нем TimeZone. Затем вызовите метод parse().

EDIT:


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 на ваш часовой пояс –

+0

Спасибо, я допустил ошибку. Я хочу конвертировать время с UTC на мой часовой пояс (GMT +7). Можете ли вы привести мне пример? – R4j

Смежные вопросы