java时间为什么只显示到日_java-为什么此日期未在格林尼治标准时间显示?
我可以看到,格林尼治標(biāo)準(zhǔn)時(shí)間是Z常數(shù),以指示它是格林尼治標(biāo)準(zhǔn)時(shí)間.但是,當(dāng)我解析GMT字符串時(shí),它仍在打印本地時(shí)間.
碼:
SimpleDateFormat outFormat = new
SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
String timeGMT = "2015-05-21T08:42:27.334Z";
try {
System.out.println("Time GMT>>>>>>"+outFormat.parse(timeGMT));
} catch (ParseException e) {
e.printStackTrace();
}
輸出:
Thu May 21 08:42:27 IST 2015
預(yù)期:
Thu May 21 08:42:27 GMT 2015
解決方法:
這里有兩個(gè)問(wèn)題.
首先是您使用錯(cuò)誤的格式進(jìn)行解析.您的格式告訴解析器僅將Z視為沒(méi)有意義的文字字符.
這意味著它將把它解析為本地日期,因?yàn)樗粫?huì)將Z視為時(shí)區(qū)標(biāo)記.如果希望將Z解釋為時(shí)區(qū),則格式中應(yīng)包含X而不是“ Z”:
String timeGMT = "2015-05-21T08:42:27.334Z";
DateFormat f1 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
DateFormat f2 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSX");
Date d1 = f1.parse(timeGMT);
Date d2 = f2.parse(timeGMT);
System.out.println(d1);
System.out.println(d2);
我目前在GMT 3中,這是我從中獲得的輸出:
Thu May 21 08:42:27 IDT 2015
Thu May 21 11:42:27 IDT 2015
如您所見(jiàn),d2提前了3個(gè)小時(shí),這意味著它按照GMT解釋了原始時(shí)間.
另一個(gè)問(wèn)題是您以默認(rèn)格式打印結(jié)果日期.默認(rèn)格式是您當(dāng)?shù)氐臅r(shí)區(qū),因此它將像在我所在的時(shí)區(qū)一樣打印該格式.
要更改此設(shè)置,還必須格式化輸出:
DateFormat f3 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss z");
f3.setTimeZone(TimeZone.getTimeZone("GMT"));
System.out.println(f3.format(d2));
對(duì)于前面的示例,這將產(chǎn)生以下內(nèi)容:
2015-05-21 08:42:27 GMT
標(biāo)簽:jodatime,simpledateformat,java
來(lái)源: https://codeday.me/bug/20191120/2042818.html
總結(jié)
以上是生活随笔為你收集整理的java时间为什么只显示到日_java-为什么此日期未在格林尼治标准时间显示?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 爱奇艺发布年报:四季度运营大幅减亏,今年
- 下一篇: 常用的正则字母大小写转换