2016-08-03 4 views
0

Я знаю, что это аналогичный вопрос для многих, но я зациклен на том, что я делаю неправильно в своем коде.Конвертировать временную метку сервера в локальную дату в Android

У сервера есть временная метка из Америки, и я живу в Индии. Я хочу, чтобы выбранная временная метка была преобразована в мои стандарты времени. Я использую этот следующий блок кода:

SimpleDateFormat formatter = new SimpleDateFormat("dd-M-yyyy hh:mm:ss");  
Date date = formatter.parse(serverDate); //Server Date    

     SimpleDateFormat sdfIndia = new SimpleDateFormat("dd-M-yyyy hh:mm:ss"); 
     TimeZone tzInIndia = TimeZone.getDefault(); 
     sdfIndia.setTimeZone(tzInIndia); 

     String sDateInIndia = sdfIndia.format(date); //Date Output in String Format 

Время вывода является такой же, как во время ввода. Почему это выходит так же? Любая помощь, в которой я ошиблась?

+0

Возможно, это поможет: http://stackoverflow.com/a/1661389/598641 – Axxxon

+0

@Axxxon Ну, моя проблема связана с преобразованием времени, это не влияет на код. Время входа такое же, как и время выхода. –

ответ

0

Код, указанный ниже, отображает дату в США/Восточной и Азии/Дубай.

Date today = new Date(); 
    DateFormat formatter= new SimpleDateFormat("dd-M-yyyy hh:mm:ss a"); 
    formatter.setTimeZone(TimeZone.getTimeZone("US/Eastern")); 
    System.out.println("US/Eastern Time: " + formatter.format(today)); 

    formatter.setTimeZone(TimeZone.getTimeZone("Asia/Dubai")); 
    System.out.println("Asia/Dubai Time: " + formatter.format(today.getTime())); 

Выход во время этого поста:

US/Eastern Time: 03-8-2016 11:18:05 AM

Asia/Dubai Время: 03-8- 2016 7:18:05 PM

часовой пояс, иды "US/Eastern" и "Азия/Дубай" являются от

String[] ids = TimeZone.getAvailableIDs(); 
    for (String id : ids) { 
     System.out.println(TimeZone.getTimeZone(id).getID()); 
    } 
+0

Спасибо за ваш быстрый ответ. Хорошо, что я знаю свой идентификатор Timezone моего региона, я использовал 'TimeZone.getDefault();' - работает одинаково! Но проблема в том, что я использую статический формат datetime, например, «03-8-2016 11:18:05» в качестве ввода, который, как я знаю, имеет часовой пояс из Америки. Я хочу, чтобы эта строка была преобразована в мое региональное время. Мой код просто плюет на тот же вход. –

+0

Предположим, что ваш часовой пояс - «Азия/Дубай», у вас есть строка времени 03-8-2016 11:18:05 и вы хотите 03-8-2016 07:18:05, правильно? –

+0

Ya, тот правильный. но проблема с конверсией, которую вы показали, заключается в том, что она дает утреннее время US/Eastern, и вы получаете вечернее время в Азии/Дубае. –

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