当字符串以Z结尾时,将字符串转换为日期格式

时间:2019-02-11 20:08:32

标签: java date simpledateformat

我必须将以下String解析为更具可读性的日期格式。

字符串日期=“ 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 :(得分:3)

这可以解决问题。 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

答案 1 :(得分:0)

您是否有必要在这些时区做任何事情?

如果不能的话

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