「 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
动手实践吧
这次就写这些啦,虽然写的比较基础,但是相信仔细阅读,还是会对初学者有一定的帮助,对自己后续回顾也会有帮助的。不要眼高手低,最好要把代码都运行起来,这样才能从中收获。
领取专属 10元无门槛券
私享最新 技术干货