Преобразование строки в формат даты, когда строка заканчивается в Z - PullRequest
0 голосов
/ 11 февраля 2019

Я должен разобрать следующую строку в более читаемый формат даты.

String date = "20190112151605.0Z";

Однако я никогда раньше не сталкивался с Z.Я знаю, что это связано с часовым поясом, но когда я пытаюсь использовать свой обычный код, я получаю java.lang.NumberFormatException.

Мой код выглядит следующим образом:

 String whenChanged = "20190112151605.0Z";  

 long DIFF_NET_JAVA_FOR_DATE_AND_TIMES = 11644473600000L;
 long adDate1 = Long.parseLong(whenChanged);
 long adLongDate1 = ( adDate1  / 10000 ) - DIFF_NET_JAVA_FOR_DATE_AND_TIMES;
 Date lastLogonDate1 = new Date(adLongDate1);
 String format2 = new SimpleDateFormat("MM/dd/yyyy 
 HH:mma'Z'").format(lastLogonDate1);

Любойпомощь была бы отличной.Спасибо

Ответы [ 2 ]

0 голосов
/ 12 февраля 2019

Это сделает свое дело.Z означает часовой пояс UTC

DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyyMMddHHmmss.Sz");
ZonedDateTime parsed = ZonedDateTime.parse("20190112151605.0Z", fmt);

System.out.println(parsed);     // prints 2019-01-12T15:16:05

См. DateTimeFormatter

0 голосов
/ 11 февраля 2019

Нужно ли вам что-либо делать с этими часовыми поясами?

Если бы вы не могли сделать

if(whenChanged.contains('Z')){
   whenChanged = whenChanged.substring(0,date.indexOf('Z'));
}
...