Java中的时间、时区和夏令时

本文详细介绍了Java中关于时间、时区和夏令时的相关概念,包括理论时区、实际时区、UTC、GMT、Unix Time等,并探讨了Java对时间的处理,如本地时间、java.util.Date、System.currentTimeMillis()、java.text.SimpleDateFormat以及java.util.Calendar。文章还讨论了Java如何处理夏令时,并给出了实例代码,展示了时间格式化的实现。
摘要由CSDN通过智能技术生成

相关概念


时区

时区是地球上的区域使用同一个时间定义。以前,人们通过观察太阳的位置(时角)决定时间,这就使得不同经度的地方的时间有所不同(地方时)。1863年,首次使用时区的概念。时区通过设立一个区域的标准时间部分地解决了这个问题。世界各个国家位于地球不同位置上,因此不同国家的日出、日落时间必定有所偏差。这些偏差就是所谓的时差。


 

理论时区

理论时区以被15整除的子午线为中心,向东西两侧延伸7.5度,即每15°划分一个时区,这是理论时区。理论时区的时间采用其中央经线(或标准经线)的地方时。所以每差一个时区,区时相差一个小时,相差多少个时区,就相差多少个小时。东边的时区时间比西边的时区时间来得早。为了避免日期的紊乱,提出国际日期变更线的概念。

实际时区

         但是,为了避开国界线,有的时区的形状并不规则,而且比较大的国家以国家内部行政分界线为时区界线,这是实际时区,即法定时区。

本初子午线

英语:Prime meridian,即0度经线,亦称格林威治子午线、格林尼治子午线或本初经线,是经过英国格林尼治天文台的一条经线(亦称子午线)。本初子午线的东西两边分别定为东经和西经,于180度相遇。

国际日期变更线

         英语:InternationalDate Line,又名国际日界线、国际换日线或国际日期线,这条子午线由于穿越陆地,而在陆地变更日期既不方便也不可行,故实际使用的国际换日线是一条基本上只经过海洋表面的折线(见附图)。

为了解决日期紊乱问题,大体以180度经线为日界线;由于照顾行政区域的统一,日界线并不完全沿180°的子午线划分,而是绕过一些岛屿和海峡:由北往南通过白令海峡和阿留申、萨摩亚、斐济、汤加等群岛到达新西兰的东边。

         须注意的是,是由东向西越过此线,(从0hr到24hr)日期需加一天;由西向东越过此线,(从24hr到0hr)日期需减一天;如:于2011年4月8日15:45向东航行跨过此线,时间应变为2011年4月7日15:45。原理是从零度经线所在时区向东每跨 1 个区间时钟就拨快 1 小时, 而向西每跨 1 个区间时钟就拨慢 1 小时, 如此一来, 到了另一端经线 180 度附近, 就会有 24 小时的落差。为了平衡此一误差, 人们因而订定了国际换日线。

UTC

协调世界时,又称世界标准时间或世界协调时间,简称UTC(从英文“Coordinated Universal Time”/法文“Temps UniverselCoordonné”而来),是最主要的世界时间标准,其以原子时秒长为基础,在时刻上尽量接近于格林尼治标准时间。

GMT

世界时UT即格林尼治时间,格林尼治所在地的标准时间。

Unix Time

Unix时间戳(英文为Unix epoch, Unix time, POSIX time 或 Unix timestamp)

是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒。

 

夏令时

夏时制,夏时令(DaylightSaving Time:DST),又称“日光节约时制”和“夏令时间”,是一种为节约能源而人为规定地方时间的制度,在这一制度实行期间所采用的统一时间称为“夏令时间”。一般在天亮早的夏季人为将时间提前一小时,可以使人早起早睡,减少照明量,以充分利用光照资源,从而节约照明用电。各个采纳夏时制的国家具体规定不同。目前全世界有近110个国家每年要实行夏令时。

    夏令时为一个时间段,一般在进入时刻将时钟调快一小时(例如2:00调为3:00),在退出时刻将时钟调慢一小时(例如3:00调为2:00)。

常用Java对时间的处理

本地时间

本地时间是一个相对概念,不同时区的8:00并不是同一个时刻。

从编码的角度去理解为UTC的1970年1月1日00:00:00这一时刻,加上经过的时间差(两个时刻间的时间偏移量),再换算为当前时区时间。

与Unix Time(UTC的1970年1月1日00:00:00)的时间差,是时间偏移的绝对值,这个值本身没有时区属性,是进行时间转换的基准(重要)。

java.util.Date

Date本质上就是相对UnixTime的毫秒数,这一点从其构造函数上可以看出来:

public Date() {

  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值