Java 中的时间概念

在开发中,其实很多人对时间的理解不是很深。因为很多公司只是服务本国人民,所以只需要知道自己国家的时间就可以了。但是向一些跨国公司,世界级别的公司,由于业务涉及到很多国家,这个时候只考虑本地时间的话,肯定会发生很多不可思议的事情。下面就系统的学习一下时间相关的知识。

时区

时区是地球上区域使用同一个时间定义。1863年首次使用时区的概念。时区概念在使用中,分为理论时区和法定时区。

理论时区

理论时区以被15整除的子午线为中心,向东西两侧延伸7.5度,即每15°划分一个时区。理论时区的时间采用其中央经线(或标准经线)的地方时。所以每差一个时区,区时相差一个小时,相差多少个时区,就相差多少个小时。东边的时区时间比西边的时区时间早。

法定时区

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

现今全球共分为24个时区。中国的时区不是严格按照南北直线来划分,而是按照自然条件来划分。中国差不多跨越5个时区,但为了使用方便,实际上只使用东八时区的标准时为北京时间。

考虑到时区,还需要考虑时令。
例如:北京时间比洛杉矶时间早15或者16个小时(因为时令的存在);北京时间比纽约时间早12或者13个小时(具体和时令有关)

格林威治时间

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

一般使用GMT+8表示中国的时间,是因为中国位于东八区,时间上比格林威治时间快8个小时。

时间戳

时间戳(timestamp),一个能表示一份数据在某个特定时间之前已经存在的、 完整的、 可验证的数据,通常是一个字符序列,唯一地标识某一刻的时间。

时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。通俗的讲, 时间戳是一份能够表示一份数据在一个特定时间点已经存在的完整的可验证的数据。

为什么在有些系统出现问题的时候,时间会显示成:Thu Jan 01 08:00:00 CST 1970 或者 1970-01-01 08:00:00

当有些计算机存储或者传输 Timestamp 出错时,这个 Timestamp 就会取默认值。而在计算机中,默认值通常是 0。

当 Timestamp 为 0,就表示时间(GMT)1970年1月1日0时0分0秒。中国使用北京时间,处于东 8 区,相应就是早上 8 点。因此在中国这边,时间出错了,就经常会显示成 1970年1月1日 08:00。

Java中Timestamp和Date之间相互转换

// java.util.Date转换为java.sql.Timestamp
    Date date = new Date();
    new Timestamp(date.getTime());
// java.sql.Timestamp转换为java.util.Date
    Timestamp ts = new Timestamp(System.currentTimeMillis());
    Date date  = new Date(ts.getTime());

Java 8之前,Java中获取系统的当前时间。

1、
Date date = new Date();

2、
Calendar c1 = Calendar.getInstance();
c1.getTime();

说点什么

avatar
  Subscribe  
提醒

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部