java之时间格式类型转换

「 just coder」

Learn More And Know More

这是「just coder」的第 1 篇原创

最近开发过程中遇到一个时间格式转化的问题,在此记录一下。

1

问题分析

背景:

在开发一个新接口的过程中,作为消费方,需要调用服务方的接口。服务方接口中返回了一个字符串类型的日期字段,消费方解析该字段落库保存。

问题:

接口文档中该字段的格式是["MMM dd, yyyy K:m:s a"],过于相信服务方的接口文档说明,开发过程中没有测试到以下两种场景,导致保存落库和预期不一致。

1、凌晨12点

入参 Jun 11, 2018 12:09:34 AM

输出 2018-06-11 12:09:34

2、中午12点

入参 Jun 11, 2018 12:23:45 PM

输出 2018-06-12 00:23:45

解决方案:

1、根据入参分析,凌晨12点/中午12点,入参时间都为12点。

2、大写K表示am/pm 中的小时数(0-11)

3、小写h表示am/pm 中的小时数(1-12)

4、修改日期格式转化类型为 ["MMM dd, yyyy h:m:s a"]

解决问题后,反思,发现自己对于时间转化的理解不是很到位,试着重新温习了基础知识。

2

时间标准简介

1、UTC(世界标准时间)

协调世界时(英语:Coordinated Universal Time,法语:Temps Universel Coordonné,简称UTC)是最主要的世界时间标准,其以原子时秒长为基础,在时刻上尽量接近于格林尼治标准时间。

2、GMT(格林尼治平时)

格林尼治平时(英语:Greenwich Mean Time,GMT)是指位于英国伦敦郊区的皇家格林尼治天文台当地的平太阳时,因为本初子午线被定义为通过那里的经线。

格林尼治平时的正午是指当平太阳横穿格林尼治子午线时(也就是在格林尼治上空最高点时)的时间。由于地球每天的自转是有些不规则的,而且正在缓慢减速,因此格林尼治平时基于天文观测本身的缺陷,已经被原子钟报时的协调世界时(UTC)所取代。

3、CST(北京时间)

北京时间,又名中国标准时间,是中国大陆的标准时间,比世界协调时快八小时(即UTC+8),与中国香港、中国澳门、台北、吉隆坡、新加坡等地的标准时间相同。

3

日期和时间模式

日期和时间格式由日期和时间模式 字符串指定。在日期和时间模式字符串中,未加引号的字母 'A' 到 'Z' 和 'a' 到'z' 被解释为模式字母,用来表示日期或时间字符串元素。

4

举例分析

1、获取当前时间

输出:

2、["MMM dd, yyyy h:m:s a", Locale.ENGLISH]转换为[yyyy-MM-dd HH:mm:ss]

输出:

3、["MMM dd, yyyy K:m:s a", Locale.ENGLISH]转换为[yyyy-MM-dd HH:mm:ss]

输出:

5

动手实践吧

这次就写这些啦,虽然写的比较基础,但是相信仔细阅读,还是会对初学者有一定的帮助,对自己后续回顾也会有帮助的。不要眼高手低,最好要把代码都运行起来,这样才能从中收获。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180611G129MS00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券