然后无论如何,这个奇怪的时间我们可能看不懂,但是我们最终要显示的时间是北京时间(如果你是其他国家的人就另当别论了哦)
那么下面我们就来简单介绍一下关于时间的一些基本知识:
首先是UTC:时间标准时间
协调世界时(英:Coordinated Universal Time ,法:Temps Universel Coordonné),又称世界统一时间,世界标准时间,国际协调时间。英文(CUT)和法文(TUC)的缩写不同,作为妥协,简称UTC。
然后是GMT:格林尼治
时间
世界时UT 即格林尼治时间,格林尼治所在地的标准时间。以地球自转为基础的时间计量系统。地球自转的角度可用地方子午线相对于地球上的基本参考点的运动来度量。为了测量地球自转,人们在地球上选取了两个基本参考点:春分点(见分至点)和平太阳,由此确定的时间分别称为恒星时和平太阳时。
然后下面是GST时间:也就是北京时间
通常我们在数据库中存放,或者给用户看的时间都是GST时间
现在我们说说上面的时间
2016-08-9T10:01:54.123Z
20160809100154.123Z
首先字母T:他表示后面跟的时间
而最末尾的Z表示UTC统一时间
而123表示的毫秒,大家可以测试将123改为1230,最后得到的时间,秒会增加1秒
网上很多人在搜索000Z是什么意思,其实他的意思就是 0毫秒 utc统一时间
既然我们知道了Z表示UTC统一时间,那么接下来就好办了
如上面第一个 表达式
2016-08-9T10:01:54.123Z
我们可以这样来获得一个GST(北京时间)时间,看如下代码:
String str ="2016-08-9T10:01:54.123Z";
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS Z");
Date d = format.parse(str.replace("Z", " UTC"));//注意是空格+UTC
System.out.println(d);
这样我们就获得了一个本地的时间
最后我们得到的时间是:Tue Aug 09 18:01:54 CST 2016
而表达式 20160809100154.123Z
他的转换方式也是一样的,知识格式化时,将格式化字符串修改以下即可:yyyyMMddHHmmss.SSS Z
之前我也遇到过一个类似的问题,大家也可以参考下
一个奇怪的时间格式:2016-01-02T16:00:00.000Z