世界时间以什么为标准(世界的时间是以哪个国家为标准)

前言

我们在开发时,除了数字、数学这样的常用API之外,还有日期时间类,更是会被经常使用。

比如我们项目中必备的日志功能,需要记录异常等信息产生的时间。还有数据库中的表,也经常需要带有日期时间字段,用于记录本条数据产生和更新的时间。另外当我们需要对某段代码进行调优时,也往往需要知道本段代码的执行时间是多长。诸如此类,项目中有很多地方都需要用到日期和时间,所以今天必须带各位来学习一下相关的API有哪些。


全文大约 【5400】字,不说废话,只讲可以让你学到技术、明白原理的纯干货!本文带有丰富的案例及配图,让你更好地理解和运用文中的技术概念,并可以给你带来具有足够启迪的思考…

一. 概念简介

在开始学习今天的知识之前,先给大家讲解一下与今天内容相关的一些概念,否则可能会让一些同学产生迷惑

1. 日期和时间的区别

首先我们得搞清楚,日期和时间的概念并不一样。日期是指某一天,它不是连续变化的,可以说是离散的。

而时间有两种概念,一种是不带日期的时间,如10:30:01;另一种是带日期的时间,如2023-01-01 15:11:40。只有带日期的时间,才能唯一确定某个时刻,而不带日期的时间是无法确定一个唯一时刻的。

2. 本地时间

本地时间其实就是每个地方,当前所在国家所采用的标准时间。

比如我们国家就是采用的北京时间,只要是在中国大陆,我们说晚上8:00见,这个8:00指的就是北京时间。即使我们国家的时区,其实包括了从东五区到东九区共5个时区,但我们全国都是统一采用的东八区的区时,这样各地区人员之间的交流才不会产生歧义。但如果是在别的国家,那这个本地时间,就是他们国家的标准区时了,所以每个国家的标准区时可能是不同的。

3. 时区表示法

我们初中学地理的时候,就学过时区的概念,在这里就不多讲了。在计算机中,如果我们想准确地确定一个时间,需要把本地时间和时区结合在一起才行。 其中时区有如下几种表示方式:

1. GMT或UTC加时区偏移表示法:如GMT+08:00 或 UTC+08:00,就表示东八区的时间。因为北京时区是东八区,领先UTC 8个小时,所以将UTC转换成北京时间时,要加上8小时。

GMT(Greenwich Mean Time)是格林威治标准时间,UTC(Universal Time Coordinated)是世界统一时间或世界标准时间,GMT和UTC其实基本是等价的,它们都是英国伦敦的本地时间。但UTC使用了更精确的原子钟计时,每隔几年会有一个闰秒,不过我们在开发时可以忽略两者的误差,因为计算机的时钟在联网时会自动与时间服务器同步时间。

2. 时区缩写表示法:如CST是China Standard Time的缩写,即中国标准时间。但CST也是美国中部时间Central Standard Time USA的缩写,因此有些缩写容易产生混淆,开发时尽量不要使用缩写形式。

3. 洲/城市表示法:如Asia/Shanghai,表示上海所在地的时区。我们要特别注意,城市名称并不是任意的城市,而是由国际标准组织规定的城市。

4. 本地化

本地化并不只包括时间这一种信息,还包括一个国家或地区所采用的日期、时间、数字、货币等各种信息的格式,开发时通常使用Locale进行表示。Locale由“语言_国家”的字母缩写构成,如“zh_CN”就表示“中文+中国”,“en_US”表示“英文+美国”。其中语言是小写,国家是大写。

而对于不同国家或地区的Locale日期部分来说,如中国和美国的本地时间表示方式如下:

● zh_CN:2023-01-24

● en_US:01/24/2023

5. 夏令时

夏令时(Daylight Saving Time:DST),也叫夏时制,又称“日光节约时制”,是一种为了节约能源而人为规定地方时间的制度。 一般在天亮早的夏季人为将时间调快一小时,可以使人早起早睡,减少照明量,以充分利用光照资源,从而节约照明用电。

我们国家曾经实行过一段时间夏令时,但在1992年就废除了,不过美国人到现在还在使用。所以涉及到跨国应用开发时,相关时间的换算可能会有点复杂。因为涉及到夏令时,相同的时区,如果表示的方式不同,转换出的时间也是不同的。

6. Epoch Time时间起点

Epoch Time是一个固定的通用时间,即世界标准时间(UTC) 1970-01-01 00:00:00 UTC,它是计算机里时间开始的起点,该起点被记为0,而1970年以前的时间被认为是负数。

我们知道,现实世界的时间谁也不知道是从什么时候开始的,但是计算机发明的时间并不长,为了方便大家进行各种开发和计算,于是国际标准委员会就给计算机设置了一个时间的起点。以这个时间为起点,每过去一秒,该数值就加1,这样我们就可以算出对应的公历时间日期(不包括闰秒)。Epoch Time在不同的编程语言中,会有几种不同的存储方式:

● 以秒为单位的整数:1574208900,缺点是精度只能到秒;

● 以毫秒为单位的整数:1574208900123,最后3位表示毫秒数;

● 以秒为单位的浮点数:1574208900.123,小数点后表示零点几秒。

7. 时间戳

时间戳(timestamp),也称为Unix时间 或 POSIX时间,它是一种时间表示方式。

表示从1970年1月1日0时0分0秒(格林尼治时间)开始,一直到现在所经过的秒数或毫秒数。在Java一般是用long类型来存储该值,但在别的编程语言中有可能是使用float类型。比如1574208900就表示从1970年1月1日零点开始,到2019年11月20日8点15分截止,一共经历了1574208900秒,所以换算成北京时间就是:1574208900 = 北京时间2019-11-20 8:15:00。如果我们要获取当前的时间戳,在Java中可以使用System.currentTimeMillis()方法。

从本质上来说,时间戳就是个时间差值,其值与时区无关。比如在UTC标准下,时间起点的时间戳就是timestamp = 0 = 1970-1-1 00:00:00 UTC+0:00,此时对应的北京时间是timestamp = 0 = 1970-1-1 08:00:00 UTC+8:00

了解了以上这些基本概念之后,我们就可以继续往下学习今天其他的内容了。

二. Date日期时间类

1. 简介

如果我们想在Java中获取当前的时间,可以使用 java.util.Date类和 java.util.Calendar类来实现。其中,Date类封装了系统的日期和时间信息,Calendar类则会根据系统的日历来填充Date对象。

java.util.Date是一个表示日期和时间的类,代表了系统特定的时间戳。它是按照UTC时间显示的,可以精确到毫秒,源码内部使用long类型进行时间的存储。我们要注意与java.sql.Date区分,后者是用在数据库中的类,且是按照本地时区显示的。Date对象表示的时间,其默认顺序是星期、月、日、小时、分、秒、年。

2. 构造方法

java.util.Date类给我们提供了多个构造方法,如下图所示:

世界时间以什么为标准(世界的时间是以哪个国家为标准)

但是一般在开发时,我们常用的也没有这么多,一般使用时如下形式:

● Date():创建Date对象并初始化,该对象可以获取本地的当前时间,该时间会精确到毫秒。

● Date(long date):构造一个Date对象,并接受一个从1970年1月1日起的毫秒数作为参数。

3. 常用API方法

当我们构造出来一个Date对象之后,就可以使用它的一些API方法进行时间的操作了,这些常用的API方法如下:

世界时间以什么为标准(世界的时间是以哪个国家为标准)

4. 使用方法

4.1 基本使用

接下来我们先通过一个简单的案例,来演示一下Date的基本用法。

世界时间以什么为标准(世界的时间是以哪个国家为标准)

如果我们想获取当前时间的时间戳,可以使用System.currentTimeMillis()方法。构造出Date对象之后,我们可以直接打印该对象,就能展示出当前时间,但是这个格式并不一定符合我们中国人的阅读习惯,后面我们可以对日期进行格式化操作。

4.2 其他用法

除了上面这些基本用法之外,Date还有其他的一些用法。

世界时间以什么为标准(世界的时间是以哪个国家为标准)

另外我们还要注意,getYear()方法返回的年份必须加上1900;getMonth()方法返回的月份是0-11,分别表示1-12月,所以要加1;而getDate()方法返回的日期范围是1~31,就不能加1。

在打印本地时区表示的日期和时间时,不同的计算机可能会有不同的展示结果,后面我们可以使用SimpleDateFormat设置出我们想要的日期时间格式。

4.3 统计时间差

有时候我们要统计某个功能的执行时间,此时就可以用该功能结束时的时间,减去开始时的时间,得到一个时间差,这就是该功能的执行时间。

世界时间以什么为标准(世界的时间是以哪个国家为标准)

三. Calendar日历类

1. 简介

Calendar类是Java时间类Date的扩展。

相比Date,它拥有更强大的功能,主要是多了可以做简单日期和时间运算的功能,且在实现方式上也比Date类更复杂一些。Calendar可以用来计算日期,比如说计算下个月的日期,或者两个月前的日期等。

Calendar类是一个抽象类,我们在实际使用时需要实现特定的子类,一般使用getInstance()方法创建即可。Calendar类有几个主要的子类,包括java.util.GregorianCalendar和java.util.TimeZone。其中GregorianCalendar类提供了标准的日历系统,可以用来计算未来或过去某天的日期。TimeZone类则可以用来在不同的时区之间,转换日期和时间。

2. Calendar常量字段

Calendar中有以下几个常用的常量字段,用于表示不同的意义。

世界时间以什么为标准(世界的时间是以哪个国家为标准)

3. Calendar常用方法

除了以上常用的常量字段之外,Calendar还有一些常用的方法,如下表所示:

世界时间以什么为标准(世界的时间是以哪个国家为标准)

Calendar对象可以调用set()方法将日历翻到任何一个时间,当参数 year取负数时表示是公元前。调用 get()方法可以获取年、月、日等时间信息,field参数的值是前面讲过的Calendar静态常量。

4. 构建Calendar对象

Calendar类是抽象类,所以我们不能通过new的方式来构建Calendar对象。在实际使用时,我们一般是要实现特定的子类,经常是使用getInstance()方法进行创建。

世界时间以什么为标准(世界的时间是以哪个国家为标准)

5. 获取当前时间

获取到Calendar对象之后,我们可以获取到当前日期对象的年月日时分秒等信息。

世界时间以什么为标准(世界的时间是以哪个国家为标准)

我们要注意,Calendar是通过get()方法获取年月日等信息的,其中返回的年份不必转换,返回的月份仍要加1,返回的星期要特别注意,1~7分别表示周日、周一、……周六。

6. 设置时间

我们通过Calendar.getInstance()方法获取到Calendar对象后,获取到的其实就是当前时间。如果我们想设置某个特定的日期和时间,需要先用clear()方法清除掉之前所有的字段。

世界时间以什么为标准(世界的时间是以哪个国家为标准)

我们可以利用Calendar.getTime()方法,将一个Calendar对象转换成Date对象,后面我们就可以用SimpleDateFormat进行格式化操作了。

四. GregorianCalendar类

1. 简介

Java中除了有Calendar类实现了公历日历,还有一个子类GregorianCalendar。在GregorianCalendar类中,定义了两个字段:AD和BC,分别代表公历定义的两个时代。GregorianCalendar中的属性和方法与Calendar类似,壹哥就不再赘述了,接下来我们直接通过一个案例来进行展示其用法。

2. 基本用法

这里我们设计一个案例,来判断当前年份是闰年还是平年。

世界时间以什么为标准(世界的时间是以哪个国家为标准)


五. 结语

至此我们就把Date和扩展类Calendar给大家讲解完毕,今天的内容其实并不难,大家需要把一些常用的构造方式及方法、常量记一下即可。


更多程序员/IT编程、技术类内容,关注@千锋教育

本文部分内容来自互联网,如有疑问请与我们联系。

发布者:币侠财经,转转请注明出处:https://www.yfhhf.com/baike/228453.html

(0)
                       
上一篇 2023年 5月 28日 上午4:52
下一篇 2023年 5月 28日 上午5:46

相关推荐

  • 交通肇事司法解释

    法释〔2000〕33号 最高人民法院 关于审理交通肇事刑事案件 具体应用法律若干问题的解释 为依法惩处交通肇事犯罪活动,根据刑法有关规定,现将审理交通肇事刑事案件具体应用法律的若干问题解释如下: 第一条 从事交通运输人员或者非交通运输人员,违反交通运输管理法规发生重大交通事故,在分清事故责任的基础上,对于构成犯罪的,依照刑法第一百三十三条的规定定罪处罚。 第…

    百科问答 2022年 12月 2日
    1680
  • 劳动仲裁基本都拿不到钱(劳动仲裁基本都拿不到钱关门了,劳动仲裁能拿到赔偿吗)

    这么久以来有很多小伙伴自己去申请的劳动仲裁,也有我们指导的一些朋友都打赢了劳动仲裁,但是自己去申请的有一部分劳动者打赢了也没拿到钱,为什么会出现这种情况今天就给大家讲一下同样是胜诉为什么区别这么大 自己申请劳动仲裁的小伙伴一门心思都在仲裁身上,通过不断的取证包括完善自己的仲裁书达到了效果,打赢了劳动仲裁,却忽略了公司有没有钱这个问题,而这种专业性强的问题一般…

    2022年 10月 27日
    1770
  • 小故事睡前哄女朋友搞笑(哄女朋友的睡前故事搞笑的)

    从前有一只小熊,长得不好看但也不丑,还很年轻的时候,她就想,我这一-生只需要- – -次真正的爱情就够了。但是她怎么能知道遇上的人是不是真心爱她呢?于是她就把自己的心分成了两半,她想,如果第一次错了,我还有另一次付出真心的机会。 后来她真的遇上了特别喜欢的人,一只长颈鹿。她觉得长颈鹿好帅呀,又高又瘦,而且看得远,经常给她说一些远方的小故事。长颈鹿…

    百科问答 2022年 8月 26日
    3330
  • 2021年世界各国经济总量排名(2021年世界各国经济总量排名俄罗斯)

    大家都知道,中美俄都是联合国常任理事国,同时也是世界上综合实力最强的三个国家。那么在当前疫情影响下,各国的GDP情况如何呢? GDP又叫国内生产总值,是一个国家(或地区)所有常住单位在一定时期内生产活动的最终成果。GDP是国民经济核算的核心指标,也是衡量一个国家或地区经济状况和发展水平的重要指标。 美国2021年GDP总量为23.02万亿美元,而今年第一季度…

    2022年 9月 12日
    2360
  • 中国最美的女人是谁 第一名(中国最美的女人是谁 第一名彝族)

    要说颜值盛世的聚集地,我们首先肯定会想到娱乐圈,因为这是一个从来不缺少俊男美女的圈子,而且他们的美各具特色,明星的盛世容颜都是经过大众的洗礼,现如今的娱乐圈更新换代的也快,年轻貌美的明星可大有人在。你们知道谁是大陆第一美人吗? 被誉为中国影史圈最美的女演员则是陈红,出生于1968年的她在读书期间就参与了影视剧的创作,毕业之后正式在演艺圈发展,毕业于上戏科班出…

    2022年 8月 30日
    3880

联系我们

不接风险内容

在线咨询: QQ交谈

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信