2016-10-21 2 views
0

Итак, я пытаюсь напечатать строку «Eastern Daylight Time» вместо EDT. Это должно быть динамическим, а не жестко закодированным. Поиск в классе DateFormatter не привел меня к ответу, который сработал.Android DateFormatter print Восточное дневное время вместо EDT

Here was an example, который позволяет мне форматировать, но не привел меня к моему конкретному ответу.

Я получаю дату обратно в следующем формате -

2013-06-08T00: 00: 00-04: 00

Вот являются нечто, что я попробовал -

1)

String dateString = changeFormatDateStringWithDefaultTimeZone(paymentConfirmation.getTransactionDate(), 
       "yyyy-MM-dd'T'HH:mm:ssZ", 
       "M/d/yyyy hh:mm a zz"); 



public static String changeFormatDateStringWithDefaultTimeZone(String value, String ip_format, String op_format) { 
     if (value == null) 
      return null; 

     try { 
      SimpleDateFormat opSDF = new SimpleDateFormat(op_format, Locale.US); 
      opSDF.setTimeZone(TimeZone.getDefault()); 

      SimpleDateFormat inSDF = new SimpleDateFormat(ip_format, Locale.US); 

      Date date = inSDF.parse(value); 
      return(opSDF.format(date)); 

     } catch (Exception e) { 
      Log.e("Err", "Failed to convert time "+value); 
      e.printStackTrace(); 
     } 
     return null; 
    } 

2)

Date today = Calendar.getInstance().getTime(); 
String todayString = DateUtils.convertDateToStringWithTimeZone(today); 


public static String convertDateToStringWithTimeZone(Date date){ 
     SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ"); 
     String dateString = df.format(date); 
     dateString += " " + TimeZone.getDefault().getDisplayName(false, TimeZone.LONG); 
     return dateString; 
    } 

Они всегда печатают часовой пояс как EDT, и я хочу строку Eastern Daylight Time. Может ли кто-нибудь помочь мне с этим?

+0

Похоже, что ресурсы для Android вашего устройства разные. Возможно, вы можете попробовать обновить свою ОС Android. –

+0

работает под управлением Android 6.0.1 и протестирован на двух устройствах. –

+1

Ну, первый пример должен использовать «zzzz», а не «zz», но он, наконец, покажет, что вам дает второй способ. Вы также посмотрели класс 'DateFormatSymbols' и его метод [getZoneStrings()] (http://docs.oracle.com/javase/8/docs/api/java/text/DateFormatSymbols.html#getZoneStrings--)? –

ответ

1

Хорошо, на основе последнего редактирования вопроса, решение должно быть таким:

случай 1)

Выходной шаблон должен быть изменен на «M/d/гггг чч: мм в zzzz "(обратите внимание на количество символов z, чтобы обеспечить полное имя зоны). В зависимости от даты и основного часового пояса форматировщик SimpleDateFormat автоматически определит, использовать ли дневной свет или стандартное имя.

корпус 2)

Использование TimeZone.getDefault().getDisplayName(true, TimeZone.LONG) для обеспечения длинного имени дневного света. Если ваш часовой пояс по умолчанию - «Америка/Новый_York», тогда такое выражение должно печатать «Eastern Daylight Time». Обратите внимание, что логический параметр был изменен на true.

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