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);//时间

然后将对象存到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

又回来了,然后可以干点其他的事情。。。。。

 

 

 

你可能感兴趣的:(java)