关于日期、时间以及时区

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);
    
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容