java时间为什么只显示到日_java-为什么此日期未在格林尼治标准时间显示?
我可以看到,格林尼治標準時間是Z常數,以指示它是格林尼治標準時間.但是,當我解析GMT字符串時,它仍在打印本地時間.
碼:
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
預期:
Thu May 21 08:42:27 GMT 2015
解決方法:
這里有兩個問題.
首先是您使用錯誤的格式進行解析.您的格式告訴解析器僅將Z視為沒有意義的文字字符.
這意味著它將把它解析為本地日期,因為它不會將Z視為時區標記.如果希望將Z解釋為時區,則格式中應包含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
如您所見,d2提前了3個小時,這意味著它按照GMT解釋了原始時間.
另一個問題是您以默認格式打印結果日期.默認格式是您當地的時區,因此它將像在我所在的時區一樣打印該格式.
要更改此設置,還必須格式化輸出:
DateFormat f3 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss z");
f3.setTimeZone(TimeZone.getTimeZone("GMT"));
System.out.println(f3.format(d2));
對于前面的示例,這將產生以下內容:
2015-05-21 08:42:27 GMT
標簽:jodatime,simpledateformat,java
來源: https://codeday.me/bug/20191120/2042818.html
總結
以上是生活随笔為你收集整理的java时间为什么只显示到日_java-为什么此日期未在格林尼治标准时间显示?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 爱奇艺发布年报:四季度运营大幅减亏,今年
- 下一篇: 常用的正则字母大小写转换