亚太娱乐平台报道代码中的时间格式问题究竟该如何处置?_亚太娱乐平台官网资讯

来自:CSDN 2020-02-21

作者 | 曹建

责编 | 屠敏

出品 | CSDN(ID:CSDNnews)

全世界按经度划分为 24 个时区,每区经度 15 °,有零时区、东西各 11 个时区和 12 个时区。各时区使用其中央经线的地方平时为时区时间。我们生活中采纳的时间是东八区时间, 东八区(UTC / GMT+08:00)是比世界协调时间(UTC)/ 格林尼治标及时间(GMT)快 8 小时的时区,理论上的身分是位于东经 112.5 度至 127.5 度之间,是东盟标准的其中一个候选时区。当格林尼治标及时间为 0:00 时,东八区的标及时间为 08:00 ,也就北京时间。北京时间采纳的是距离北京以东约 340 公里处的地方时间。北京时间使用东八区的区时,而非东八区由北京时间授时。北京时间是行政治理、生产、交通运输等工作的时间计量标准。

GMT,即格林尼治标及时间,也就是世界时。 格林尼治是爱拼娱乐城官方网伦敦南郊原皇家格林尼治天文台所在地,地球本初子午线的标界处,世界计算时间和经度的起点。以其海事历史、作为本初子午线的标准点、以及格林尼治时间以其命名而驰名于世。 GMT 的正午是指当太阳横穿格林尼治子午线(本初子午线)时的时间。但由于地球自转不均匀非法则,导致 GMT 时间不精确,现在已经不再作为世界标准世界使用。

UTC,英文名 Coordinated Universal Time ,即协调世界时,UTC 是以原子时秒长为基础,在时刻上尽量接近于 GMT 的一种时间计量系统。国际原子时的精确度为每日数纳秒,而世界时的精确度为每日数毫秒。应付这种情况,一种称为协调世界时的折衷时标于 1972 年面世。为确保 UTC 与 GMT 相差不会超越 0.9 秒,在有需要的情况下会在 UTC 内加上正或负闰秒。UTC 现在作为世界标及时间使用。所以,UTC 与 GMT 基本上等同,误差不差过 0.9 秒。

当在程序开拓进程当中,使用一些国外封装的前台插件或做一些国际化的功能时,经常会用到世界协调时间(UTC)或格林尼治时间(GMT)。

作为一个的程序员,我们都会将时间转换为北京时间,以便进行逻辑处置和显示。我们经常看到或用到的时间格式是如 2019-10-14 21:30:03 这样的时间格式,但 UTC 的时间格式并非我们上面经常看到的那样时间格式,那 UTC 时间格式有哪些呢,以及如何进行格式转换呢,下面分别示例展示如何转换:

( 1 ) UTC 第一种时间格式:2020-01-01T21:30:03+08:00,中间的 T 标识时间,+08:00 为标识东八区时间,其解析转换进程如下:

public static void main ( String [ ] args ) {

try {

String dateTime = "2020-01-01T21:30:03+08:00";

SimpleDateFormat dateformat = new SimpleDateFormat ( "yyyy-MM-dd'T'HH:mm:ss+08:00" ) ;

Date date= dateformat.parse ( dataTime ) ;

} catch ( ParseException e ) {

e.printStackTrace ( ) ;

}

}

上面示例中的时间是带有时区标识的时间格式,其还有一种转换方法,也能够转换为正常的 Date 类型的日期格式,示例如下:

String dateTime = "2020-01-01T21:30:03+08:00";

SimpleDateFormat dateformat = new SimpleDateFormat ( "yyyy-MM-dd'T'HH:mm:ssX:00" ) ;

Date date= dateformat.parse ( dataTime ) ;

} catch ( ParseException e ) {

e.printStackTrace ( ) ;

}

( 2 ) 第二种时间格式:2019-10-14T13:41:45.223Z,类似这种时间格式进行时间格式转换。 在军事中,协调世界时区会使用 "Z" 来表示。又由于 Z 在无线电联络中使用 "Zulu" 作代称,协调世界时也会被称为 "Zulu time"。Z 前面的三个数字表示毫秒。

public static void main ( String [ ] args ) {

try {

String dateTime = "2019-10-14T13:41:45.223Z";

SimpleDateFormat dateformat = new SimpleDateFormat ( "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'" ) ;

}

上面示例中的时间格式还有一种转换方法,也能够转换为正常的 Date 类型的日期格式,示例如下:

SimpleDateFormat dateformat = new SimpleDateFormat ( "yyyy-MM-dd'T'HH:mm:ss.ms'Z'" ) ;

}

( 3 ) 第三种时间格式: Sat Oct 12 2019 14:19:40 GMT 0800 ( 标及时间 ) ,该时间是格林尼治时间格式的时间。应付这种格式,我们都能够认的出来,但很多时刻并不知道如何将其转化为我们常用的 Date 类型的时间格式,可采纳下面的方法进行转换。

String dataTime = "Sat Oct 12 2019 14:19:40 GMT+0800 ( 标及时间 ) ";

// 该 pattern 中的 E 标识星期,MMM 标识月份

String data = dataTime.replace ( "GMT", "" ) .replaceAll ( "\ ( .*\ ) ", "" ) ;

// 将字符串转化为 date 类型,格式 2016-10-12

SimpleDateFormat format = new SimpleDateFormat ( "EEE MMM dd yyyy hh:mm:ss z", Locale.ENGLISH ) ;

Date dateTrans = format.parse ( data ) ;

SimpleDateFormat formatDate = new SimpleDateFormat ( "yyyy-MM-dd HH:mm:ss" ) ;

// 将其转化解析可的日期为:2019-10-12 14:19:40

String beijingTimeStr = formatDate.format ( dateTrans ) ;

还有一种和上面时间格式类似的时间格式,同样可进行时间转换,也能够指定某时间进行时间格式转换。

示例如下:

// 和上面的时间格式相比少了 + 号

String dataTime = "Sat Oct 12 2019 14:19:40 GMT 0800 ( 标及时间 ) ";

SimpleDateFormat dateformat = new SimpleDateFormat ( "E MMM dd yyyy HH:mm:ss z", Locale.ENGLISH ) ;

// 此处解析获得的时间为伦敦时间,即格林尼治时间,若猎取北京时间还需要加 8 个小时

上面的示例中采纳 Locale 指定时区,进行时区之间的时间转换。 Locale 表示地区,每一个 Locale 工具都代替了一个特定的地理、政治和文化地区。在操作 Date, Calendar 等表示日期 / 时间的工具时,经常会用到;因为差别的地区,时间表示方式都差别。 同理,也能够指定别的时区进行时间转换。如 CHINA,JAP,UK, FRENCH 等等。

UTC 和 GMT 在我们开拓的进程中经常会遇到,特别是做一些国际化功能的时刻。因为应用的程序和功能需要考虑在差别的时区进行运行,掌握 UTC ,GMT 与北京时间之间的相互转换,能够极大的提高我们的开拓效率。

var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?fc03c8be482cb50421070dc544ea100c"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); (function(){ var src = document.location.protocol +'//js.passport.qihucdn.com/11.0.1.js?0cafbe109ab248eb7be06d7f99c4009f'; document.write('