1. 程式人生 > >java中Date型別到MongoDB日期轉換問題,2018-03-01T16:00:00.000Z,少8個小時問題,應該是3月2號才對

java中Date型別到MongoDB日期轉換問題,2018-03-01T16:00:00.000Z,少8個小時問題,應該是3月2號才對

一種:

String dt = "2018年3月2日";
SimpleDateFormat sd = new SimpleDateFormat("yyyy年MM月dd日");
//sd.setCalendar(new GregorianCalendar(new SimpleTimeZone(0, "GMT")));
Date time = sd.parse(dt);

steel.setTime(time);//時間

然後將steel物件存到mongo裡面它的日期會顯示為:2018-03-01T16:00:00.000Z

為啥感覺少了一天,其實是少8個小時,因為:

聯想到我們當前的時區是+8區  而16+8正好也是第二天0點,估計這000Z這貨多半是和時區相關的。

本地時間"GMT+8",修正GMT,然後將程式碼中//裡面的紅色程式碼開啟,在GMT+8時區下自動加8個小時。

在執行一下:2018-03-02T00:00:00.000Z

這樣就修正過來了

另一種:

String date = "2018-03-01T16:00:00.000Z"; 轉換成data型別,

String date = "2018-03-01T16:00:00.000Z"; 
date = date.replace("Z", " UTC");//注意是空格+UTC
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS Z");//注意格式化的表示式
Date d = format.parse(date);
System.out.print(d);

UTC 通用標準時,以z來標識。將z修改為UTC 。

執行下:Thu Mar 02 00:00:00 CST 2018

又回來了,然後可以乾點其他的事情。。。。。