UTC(世界标准时间)/GMT(格林威治时间)/CST(北京时间)

关于时间格式 2016-08-9T10:01:54.123Z 20160809100154.123Z 处理方法

今天遇到了一个奇怪的时间格式

如以下格式,下面两种时间格式所表示的时间是同一个时间,这个不难理解

//UTC时间,世界标准时间
2016-08-9T10:01:54.123Z 

20160809100154.123Z

如图所示,这是一张由网友提供的图片,里面显示的是时间

UTC时间转换为GSM时间
UTC时间转换为GSM时间

然后无论如何,这个奇怪的时间我们可能看不懂,但是我们最终要显示的时间是北京时间(如果你是其他国家的人就另当别论了哦)

那么下面我们就来简单介绍一下关于时间的一些基本知识:

首先是UTC:协调世界时

协调世界时(英:Coordinated Universal Time ,法:Temps Universel Coordonné),又称世界统一时间,世界标准时间,国际协调时间。英文(CUT)和法文(TUC)的缩写不同,作为妥协,简称UTC。
世界标准时间UTC:GMT+0

GMT:格林尼治平时

世界时UT 即格林尼治时间,格林尼治所在地的标准时间。以地球自转为基础的时间计量系统。地球自转的角度可用地方子午线相对于地球上的基本参考点的运动来度量。为了测量地球自转,人们在地球上选取了两个基本参考点:春分点(见分至点)和平太阳,由此确定的时间分别称为恒星时和平太阳时。
但是格林尼治本地的时间比格林尼治平时,大一小时,也就是格林尼治本地的时间:GMT+1

CST时间:也就是北京时间

通常我们在数据库中存放,或者给用户看的时间都是CST时间
北京时间CST:GMT+8

现在我们说说上面的时间

2016-08-9T10:01:54.123Z

20160809100154.123Z

首先字母T:他表示后面跟的时间

而最末尾的Z表示UTC统一时间

而123表示的毫秒,大家可以测试将123改为1230,最后得到的时间,秒会增加1秒

如上面第一个 表达式 2016-08-9T10:01:54.123Z

我们可以这样来获得一个CST(北京时间)时间,看如下代码:

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

北京时间所属时区: UTC/GMT +8
格林威治标准时间所属时区: UTC/GMT +1

格林威治时间格式:
Thu Oct 16 07:13:48 GMT 2015

你可能感兴趣的:(时间)