2013-04-15 5 views
-2

Я пытаюсь преобразовать дату/время UTC в другой часовой пояс. Он просто показывает дату/время в часовой пояс UTC.Невозможно преобразовать дату с UTC в другой часовой пояс

код ниже:

 apiDate = "2013-04-16T16:05:50Z"; 
     SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ss'Z'"); 
     Date date = dateFormat.parse(apiDate); 

     Calendar calendar = Calendar.getInstance(); 
     TimeZone timeZone = calendar.getTimeZone(); 

     SimpleDateFormat newDateFormat = new SimpleDateFormat("hh:mm aa, MMMM dd, yyyy"); 
     newDateFormat.setTimeZone(timeZone); 
     String newDateString = newDateFormat.format(date); 
+0

Возможный дубликат [Преобразование даты UTC в другие часовые пояса] (http://stackoverflow.com/questions/6088778/converting-utc-dates-to-other-timezones) –

+0

Да, это на самом деле дубликат. Извините, но я потратил довольно много времени на поиск ответа, но я не наткнулся на эту тему. Спасибо, в любом случае ! –

+0

Он автоматически появляется, когда вы вводите тему вопроса, поэтому она также была верхней ссылкой в ​​правой части этого экрана. –

ответ

2

Вы должны установить свой "разбор" SimpleDateFormat в UTC. В противном случае это будет на самом деле предполагается, что ваш часовой пояс по умолчанию во время синтаксического анализа:

TimeZone utc = TimeZone.getTimeZone("Etc/UTC"); 
dateFormat.setTimeZone(utc); 

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

TimeZone defaultZone = TimeZone.getDefault(); 
+0

Удивительный, спасибо большое. Я знал, что чего-то не хватает ... –

0
import java.util.Date; 
import java.util.TimeZone; 
import java.text.SimpleDateFormat; 

public class Test { 

    public static final SimpleDateFormat fDateTime = new SimpleDateFormat(
      "yyyy-MM-dd'T'HH:mm:ss"); 

    public static void main(String[] args) { 

     String output = getFormattedDate("2016-03-1611T23:27:58+05:30"); 
     System.out.println(output); 

    } 

    public static String getFormattedDate(String inputDate) { 

     try { 
      Date dateAfterParsing = fDateTime.parse(inputDate); 

      fDateTime.setTimeZone(TimeZone.getTimeZone("timeZone")); 

      return fDateTime.format(dateAfterParsing); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     return null; 
    } 
}