UTC
协调世界时,又称世界标准时间或者世界协调时间,简称UTC(Coordinated Universal Time)。其以原子时长为基础,在时刻上尽量接近于格林尼治标准时间。
子午线
本初子午线:Prime meridian,即0度经线,亦称格林威治子午线、格林尼治子午线或者本初经线,是经过英国格林尼治天文台的一条经线(亦称子午线)
开发中的应用
在开发中,时常会遇到关于时间、日期、日历等的逻辑处理,这时可能就会遇到一些比较莫名的问题。
比如根据UTC时间戳转化为日期时间格式,可能会有不同的结果,或者转化出的结果不是自己预期的,这其中就涉及到了时区的概念。
一些系统方法提供的格式转换(例如:iOS开发语言swift),是基于子午线的时区转换出来的时间格式,而中国属于东八区,所以这个转换出来的时间可能与你的预期正好差了8个小时。
在Android或Java开发中有时也会遇到类似的问题,不过当APP的用户仅仅局限于国内时,可能不会暴露的那么明显。因为在Java的默认方法中针对时区的处理,会默认采用当前地区的时区作为基准,来自动转换不同地区对应的不同时区。但是这样并不是那么的严谨,或者当前APP仅仅服务于国内用户时,那么由于用户手机时区设置了非中国时区(东八区),那么就会导致转换时出现非预期结果。
这时,就用到了Locale、TimeZone类,可以通过硬编码当前时区,使得转换结果脱离手机系统设置。
国内就是对应着Locale.CHINA
一般需要用到时区处理的类:
-
SimpleDateFormat
new SimpleDateFormat(pattern, Locale.getDefault()).format(new Date(System.currentTimeMillis()));
-
Calendar
Calendar.getInstance(Locale.CHINA);
网友评论