一分钟不一定是60秒!

一分钟不一定是60秒!,第1张

问:什么时候一分钟不是一分钟?

答:6月30日格林威治时间(Greenwich Mean Time,GMT)23点59分,一分钟将有61秒。

这件怪事发生的原因是闰秒。

闰秒在计时员调整高精度时钟时发生,调整后时钟与地球自转同步,太阳和月球之间的引力牵引影响地球的自转。

说明:Michel Abgrall是国家参考系统巴黎天文台(Paris Observatory)站的主管,他监测一系列设备。上图是他在2015年6月12日为月底出现的闰秒(leap second)做准备。来源:physorg

地球上的725亿人中可能只有少数人知道这个变化,会为这额外的一秒做计划的人就更少。

但是对钟表行业来说,这一秒非常重要,研究人员对这一秒至关重要还是应该被忽略展开了激烈讨论。

地球自转服务(Service of the Rotation of the Earth)的主管Daniel Gambis承认“添加这一秒会有问题”。地球自转服务是国际地球自转与参考系服务(International Earth Rotation and Reference Systems Service,IERS)的分支。它负责告知人们什么时候应该加上这一秒。

你家壁炉架上的老座钟不用添加闰秒。

然而,闰秒对超级钟表则非常重要,特别是那些用原子频率计时的钟表。

原子钟中最精准的是锶原子光晶格钟,4月问世的最新型号的锶原子光晶格钟150亿年才会产生一秒误差,这比宇宙存在的时间还长。

说明:对顶级钟表来说,例如GPS卫星和高频交易员使用的钟表,格林威治时间6月30日23点59分的额外一秒意义非凡。来源:physorg

实验室以外,铯钟和铷钟是全球定位系统(Global Positioning System,GPS)卫星的重要组成,这些时钟把同步信号发送给卫星导航接收器,这样卫星导航接收器就能定位出它们在地球上的三维坐标。

大数据计算机对闰秒的反应没有原子时钟那么强烈,但是它们同样需要精确的内部计时器。

比如说,互联网在全球范围内把数据分成小数据包发送出去,然后在几微秒内把这些小数据包组合起来。有些金融交易算法正是因为比竞争对手快不到一秒才能赚取利润。

从1971年开始,我们已经加过25次闰秒来简化协调世界时(Coordinated Universal Time,UTC),也就是格林尼治标准时间。

调还是不调

在过去15年,人们就是否应该添加闰秒进行了激烈的讨论。

法国原子能委员会(Atomic Energy Commission,CEA)的Roland Lehoucq说:“持反对意见的人认为现在闰秒越来越难管理,因为很多设备都有内部时钟。”

说明:有些专家认为应该完全摒弃闰秒的概念,因为它会扰乱电脑系统。来源:physorg

“问题是电脑之间的同步。虽然它能帮我们解决问题,但有时候需要花费数天。”

Gambis说:“上一次闰秒调整在2012年6月30日,那次闰秒调整破坏了许多互联网服务器。澳大利亚航空公司昆士达(Qantas)的在线预订系统“瘫痪了好几个小时。”

巴黎天文台时空参考系统(Time-Space Reference System,SYRTE)实验室的原子时钟专家Sebastien Bize说道:“是时候淘汰闰秒了。它使问题复杂化还导致错误。”

Gambis从原理方面论证了添加闰秒的正确性。

他反问道:“人类应该服务于科技,还是说科技应该服务人类?”

如果我们抛弃闰秒,人类计时就不再与我们居住的星球自转完全同步了。

Gambis说:“这意味着2000年以后,协调世界时与地球自转一周的时间会相差一个小时,”。

“进一步说,几万年以后,人们会在早上2点吃早餐。”

(译审:YY Fan)

1。GPS模块的20通道是什么含义?

GPS模块有一个通道数量的参数,例如20通道,它表示该模块最大可以同时和20颗卫星建立通讯,3颗卫星是2D定位,数据不稳定,模块只有同时收到3颗以上卫星信号后,经过复杂运算后才能获得正确的定位数据,如果同时通讯的卫星颗数越多,模块就能越快越准确地获得定位数据,在地球表面上一般的城市环境下通常可以同时和4~11颗卫星同时通讯。

2。GPS模块为什么开机后很长时间才能获得定位数据?

GPS模块有冷启动,热启动和暖启动(现在的技术基本上已经将该冷启动和暖启动两模式参数做得非常接近,从而就逐步取消了暖启动)三个参数,如果GPS模块初次通电,或者移动超过500公里后通电时,模块要重新计算一次星历数据,一般正常情况下的GPS模块只需要30多秒钟就能正常定位(这就是冷启动),S-87具有内置纽扣电池,可以将星历数据存储在模块内部,当下次模块工作的时候可以很快速的定位,一般像S-87只需要1~3秒就可以实现新的定位,那这种定位就叫做热启动,如果模块断电时间超过4小时,内部RTC没有实时供电,那么再一次的开机也相当于冷启动。

3。如果出现长时间无法冷启动定位时怎么办?

那么就需要检查GPS天线摆放位置是否在一个开阔的环境下,能否读取到GPS模块输出的GPS数据?GPS数据中的GSV语句里面可以观测到GPS卫星信号状态?从这些方面就可以判断具体问题在什么地方!模块可以每秒输出一次:$GPGGA $GPGSA $GPGSV $GPRMC的定位数据,我们通常用$GPRMC精简数据输出这条信息,这条信息包含了目标的:经度、纬度、速度(海里/小时)、运动方向角、年份、月份、时、分、秒、毫秒、定位数据是有效的还是无效的这些重要信息, GPS模块的芯片大部分还是采用全球市占率第一的SiRFIII系列为主,SiRFIII芯片是20通道,实时解算能力强。该部分模块市面上很常见:环天,达伽马,Ublox等等

4天线状态监测怎么办?

当天线开短路的时候,需要怎么处理呢?这个最好的办法是GPS模块能输出天线开短路状态的语句来提示客户做这方面的查验,这样的好处就是可以让客户很方便的查看问题点,同时保护模块不受到大电流冲击,市面上很多这样的应用,比方S-87、S-90、S-93和UBLOX一些模块也具有这样的功能,但是区别点就是Ublox的需要搭外围器件来实现这个功能,达伽马的是不用任何外围器件,好像这个功能只能flash版本的才能实现,rom版本的不能配置IO口,这个功能就没办法实现。

闰秒,是指为保持协调世界时接近于世界时时刻,由国际计量局统一规定在年底或年中(也可能在季末)对协调世界时增加或减少1秒的调整。由于地球自转的不均匀性和长期变慢性(主要由潮汐摩擦引起的),会使世界时(民用时)和原子时之间相差超过到±09秒时,就把世界时向前拨1秒(负闰秒,最后一分钟为59秒)或向后拨1秒(正闰秒,最后一分钟为61秒); 闰秒一般加在公历年末或公历六月末。

目前,全球已经进行了26次闰秒。

最近一次闰秒于北京时间2015年7月1日7时59分59秒(时钟显示07:59:60)出现。[1-3]

下一次闰秒将于北京时间2017年1月1日7时59分59秒(时钟显示07:59:60)出现。[4]

2038年问题

在计算机应用上,2038年问题可能会导致某些软件在2038年无法正常工作。所有使用UNIX时间表示时间的程序都将受其影响,因为它们以自1970年1月1日经过的秒数(忽略闰秒)来表示时间。这种时间表示法在类Unix(Unix-like) *** 作系统上是一个标准,并会影响以其C编程语言开发给其他大部份 *** 作系统使用的软件。在大部份的32位 *** 作系统上,此“time_t”数据模式使用一个有正负号的32位元整数(signedint32)存储计算的秒数。依照此“time_t”标准,在此格式能被表示的最后时间是2038年1月19日03:14:07,星期二(UTC)。超过此一瞬间,时间将会被掩盖(wrap around)且在内部被表示为一个负数,并造成程序无法工作,因为它们无法将此时间识别为2038年,而可能会依个别实作而跳回1970年或1901年。错误的计算及动作可能因此产生。

建议使用Calendar类

在JDK 50版本中对javautilDate类的方法说明如下:

javautil

类 Date

所有已实现的接口:

Serializable, Cloneable, Comparable<Date>

直接已知子类:

Date, Time, Timestamp

类 Date 表示特定的瞬间,精确到毫秒。另请参见:

DateFormat, Calendar, TimeZone

构造方法:

Date

public Date()分配 Date 对象并初始化此对象,以表示分配它的时间(精确到毫秒)。

另请参见:

SystemcurrentTimeMillis()

Date

public Date(long date)分配 Date 对象并初始化此对象,以表示自从标准基准时间(称为“历元(epoch)”,即 1970 年 1 月 1 日 00:00:00 GMT)以来的指定毫秒数。

参数:

date - 自 1970 年 1 月 1 日 00:00:00 GMT 以来的毫秒数。

另请参见:

SystemcurrentTimeMillis()

Date

@Deprecated

public Date(int year,

int month,

int date)已过时。 从 JDK 11 开始,由 Calendarset(year + 1900, month, date) 或 GregorianCalendar(year + 1900, month, date) 取代。

分配 Date 对象并初始化此对象,以表示由 year、month 和 date 参数指定的一天的开始时间(本地时间晚上 12 时)。

参数:

year - 减 1900 的年份。

month - 0-11 的月份。

date - 一月中 1-31 之间的某一天。

另请参见:

Calendar

Date

@Deprecated

public Date(int year,

int month,

int date,

int hrs,

int min)已过时。 从 JDK 11 开始,由 Calendarset(year + 1900, month, date, hrs, min) 或 GregorianCalendar(year + 1900, month, date, hrs, min) 取代。

分配 Date 对象并初始化此对象,以表示本地时区中由 year、month、date、hrs 和 min 参数指定的分钟的开始瞬间。

参数:

year - 减 1900 的年份。

month - 0-11 之间的月份。

date - 一月中 1-31 之间的某一天。

hrs - 0-23 之间的小时数。

min - 0-59 之间的分钟数。

另请参见:

Calendar

Date

@Deprecated

public Date(int year,

int month,

int date,

int hrs,

int min,

int sec)已过时。 从 JDK 11 开始,由 Calendarset(year + 1900, month, date, hrs, min, sec) 或 GregorianCalendar(year + 1900, month, date, hrs, min, sec) 取代。

分配 Date 对象,并初始化此对象,以表示本地时区中由 year、month、date、hrs、min 和 sec 参数指定的秒的开始瞬间。

参数:

year - 减 1900 的年份。

month - 0-11 之间的月份。

date - 一月中 1-31 之间的某一天。

hrs - 0-23 之间的小时数。

min - 0-59 之间的分钟数。

sec - 0-59 之间的秒数。

另请参见:

Calendar

Date

@Deprecated

public Date(String s)已过时。 从 JDK 11 开始,由 DateFormatparse(String s) 取代。

分配 Date 对象并初始化此对象,以表示字符串 s 指出的日期和时间,就像通过 parse(javalangString) 方法解释一样。

参数:

s - 日期的字符串表示形式。

另请参见:

DateFormat, parse(javalangString)

方法详细信息

clone

public Object clone()返回此对象的副本。

覆盖:

类 Object 中的 clone

返回:

此实例的一个克隆。

另请参见:

Cloneable

UTC

@Deprecated

public static long UTC(int year,

int month,

int date,

int hrs,

int min,

int sec)已过时。 从 JDK 11 开始,由 Calendarset(year + 1900, month, date, hrs, min, sec) 或 GregorianCalendar(year + 1900, month, date, hrs, min, sec) 取代,使用 UTC TimeZone,后跟 CalendargetTime()getTime()。

根据参数确定日期和时间。这些参数被解释为年份、月份、月中某一天、一天中的某一小时、小时中某一分钟和分钟中的某一秒。除了相对于 UTC 而不是本地时区解释这些参数之外,该方法与带 6 个参数的 Date 构造方法完全相同。该方法将返回指示的时间,用该时间与历元(1970 年 1 月 1 日,00:00:00 GMT)的时间差来表示(以毫秒为单位)。

参数:

year - 减 1900 的年份。

month - 0-11 之间的月份。

date - 一月中 1-31 之间的某一天。

hrs - 0-23 之间的小时数。

min - 0-59 之间的分钟数。

sec - 0-59 之间的秒数。

返回:

对于参数指定的日期和时间,返回自 1970 年 1 月 1 日 00:00:00 GMT 以来的毫秒数。

另请参见:

Calendar

parse

@Deprecated

public static long parse(String s)已过时。 从 JDK 11 开始,由 DateFormatparse(String s) 取代。

尝试把字符串 s 解释为日期和时间的表示形式。如果尝试成功,则返回指示的时间,用该时间与历元(1970 年 1 月 1 日,00:00:00 GMT)的时间差来表示(以毫秒为单位)。如果尝试失败,则抛出 IllegalArgumentException。

它接受许多语法;特别是它识别 IETF 标准日期语法:"Sat, 12 Aug 1995 13:30:00 GMT"。它也了解美国大陆时区缩写,但对于一般用途,应该使用时区偏移量:"Sat, 12 Aug 1995 13:30:00 GMT+0430"(比格林威治子午线晚 4 小时 30 分)。如果没有指定时区,则假定用本地时区。GMT 和 UTC 被认为是相同的。

系统将从左到右处理字符串 s,从中查找相应的数据。s 中包括在 ASCII 括号字符 ( 和 ) 中的任何内容都将被忽略。括号可以进行嵌套。另外,s 中只允许使用以下 ASCII 字符:

abcdefghijklmnopqrstuvwxyz

ABCDEFGHIJKLMNOPQRSTUVWXYZ

0123456789,+-:/以及空白字符。

连续的十进制位序列被当成十进制数:

如果数字前面有 + 或 -,并且已经识别了年份,那么数字就是一个时区偏移量。如果数字少于 24,那么它是以小时进行测量的偏移量。否则,它被认为是以分钟进行测量的偏移量,用没有标点的 24 小时时间格式来表示。前面的 - 意味着向西的偏移量。时区偏移量始终相对于 UTC(格林威治)。因此,例如,在字符串中出现的 -5 意味着“比格林威治时间晚 5 小时”,+0430 将意味着“比格林威治时间早 4 小时 30 分”。允许字符串冗余地指定 GMT、UT 或 UTC——例如,GMT-5 或 utc+0430。

如果下面条件之一为真,数字就被认为是年数:

数字等于或大于 70,并且后跟一个空格、逗号、斜杠或结束字符串

数字小于 70,并且已经识别月份和月中的某一天

如果被识别的年数小于 100,它就被解释为相对于其日期所在世纪的缩写年,缩写年的日期位于初始化 Date 类的时间的 80 年以前和 19 年以后之间。在调整年数后,从其减去 1900。例如,如果当前的年份是 1999,那么范围 19 至 99 的年数就被假定表示 1919 至 1999,而 0 至 18 的年数就被假定表示 2000 至 2018。注意,这与 SimpleDateFormat 中使用的小于 100 的年份具有稍微不同的解释。

如果数字后跟一个冒号,则认为是小时,如果小时已经被识别,则认为是分钟。

如果数字后跟一个斜杠,则认为是月份(把它减 1,以便产生范围 0 至 11 的数字),如果月份已经被识别,则认为它是月中的某一天。

如果数字后跟空白、逗号、连字符或结束字符串,那么如果小时已识别但分钟未识别,则认为是分钟;否则,如果分钟已识别,而秒没有识别,则认为是秒;否则,它被认为是月中的某一天。

连续的字母序列被认为是单词,并按以下方法进行处理:

忽略匹配 AM(忽略大小写)的单词(但如果小时尚未识别,或者小时小于 1 或大于 12,则分析失败)。

匹配 PM(忽略大小写)的单词,添加 12 到小时(但如果小时尚未识别,或者小时小于 1 或大于 12,则分析失败)。

忽略匹配 SUNDAY、MONDAY、TUESDAY、WEDNESDAY、THURSDAY、FRIDAY 或 SATURDAY 的任何前缀(忽略大小写)的任何单词。例如,sat、Friday、TUE 和 Thurs 会被忽略。

否则,匹配 JANUARY、FEBRUARY、MARCH、APRIL、MAY、JUNE、JULY、AUGUST、SEPTEMBER、OCTOBER、NOVEMBER 或 DECEMBER 的任何前缀(忽略大小写,并按这里给出的顺序考虑它们)的任何单词都被识别为指定月份,并被转换成一个数字(0 至 11)。例如,aug、Sept、april 和 NOV 被识别为月份。Ma 也是这样,它被识别为 MARCH,而不是 MAY。

匹配 GMT、UT 或 UTC(忽略大小写)的任何单词都认为是指 UTC。

匹配 EST、CST、MST 或 PST(忽略大小写)的任何单词都被认为是指北美的时区,该时区分别比格林威治时间晚 5、6、7 或 8 小时。匹配 EDT、CDT、MDT 或 PDT(忽略大小写)的任何单词都被识别为在夏令时期间分别指相同的时区。

一旦扫描了整个字符串,就以两种方式之一把它转换成时间结果。如果已经识别时区或时区偏移量,那么年、月、月中某一天、小时、分钟和秒以 UTC 进行解释,然后应用时区偏移量。否则,年、月、月中某一天、小时、分钟和秒用本地时区进行解释。

参数:

s - 要解析为日期的字符串。

返回:

自 1970 年 1 月 1 日 00:00:00 GMT 以来字符串参数表示的毫秒数。

另请参见:

DateFormat

getYear

@Deprecated

public int getYear()已过时。 从 JDK 11 开始,由 Calendarget(CalendarYEAR) - 1900 取代。

返回一个值,此值是从包含或开始于此 Date 对象表示的瞬间的年份减去 1900 的结果(用本地时区进行解释)。

返回:

日期表示的年份减去 1900。

另请参见:

Calendar

setYear

@Deprecated

public void setYear(int year)已过时。 从 JDK 11 开始,由 Calendarset(CalendarYEAR, year + 1900) 取代。

把此 Date 对象的年份设置为指定的值加 1900。修改此 Date 对象,以便它用与以前相同的月份、日期、小时、分钟和秒表示指定年份中的时间点(用本地时区进行解释)。(当然,例如,如果日期是 2 月 29 日,并且年份被设置到非闰年,那么新日期将被看作 3 月 1 日。)

参数:

year - 年份值。

另请参见:

Calendar

getMonth

@Deprecated

public int getMonth()已过时。 从 JDK 11 开始,由 Calendarget(CalendarMONTH) 取代。

返回表示月份的数字,该月份包含或开始于此 Date 对象所表示的瞬间。返回的值在 0 和 11 之间,值 0 表示 1 月。

返回:

此日期所表示的月份。

另请参见:

Calendar

--------------------------------------------------------------------------------

setMonth

@Deprecated

public void setMonth(int month)已过时。 从 JDK 11 开始,由 Calendarset(CalendarMONTH, int month) 取代。

把此日期的月份设置为指定值。修改此 Date 对象,以便它用与以前一样的年份、日期、小时、分钟和秒表示指定月份中的时间点(用本地时区进行解释)。例如,如果日期是 10 月 31 日,并将月份设置为 6 月,那么新日期将被看作 7 月 1 日,因为 6 月只有 30 天。

参数:

month - 0-11 之间的月份值。

另请参见:

Calendar

--------------------------------------------------------------------------------

getDate

@Deprecated

public int getDate()已过时。 从 JDK 11 开始,由 Calendarget(CalendarDAY_OF_MONTH) 取代。

返回此 Date 对象表示的月份中的某一天。返回的值在 1 和 31 之间,表示包含或开始于此 Date 对象表示的时间的月份中的某一天(用本地时区进行解释)。

返回:

此日期所表示的月份中的某一天。

另请参见:

Calendar

--------------------------------------------------------------------------------

setDate

@Deprecated

public void setDate(int date)已过时。 从 JDK 11 开始,由 Calendarset(CalendarDAY_OF_MONTH, int date) 取代。

把此 Date 对象的月份中的某一天设置为指定值。修改此 Date 对象,以便它用与以前一样的年份、月份、小时、分钟和秒表示月份中指定某一天中的时间点(用本地时区进行解释)。例如,如果日期是 4 月 30 日,并且日期被设置为 31,那么它将被看作 5 月 1 日,因为 4 月只有 30 天。

参数:

date - 月份中 1-31 之间的某一天。

另请参见:

Calendar

--------------------------------------------------------------------------------

getDay

@Deprecated

public int getDay()已过时。 从 JDK 11 开始,由 Calendarget(CalendarDAY_OF_WEEK) 取代。

返回此日期表示的周中的某一天。返回值 (0 = Sunday, 1 = Monday, 2 = Tuesday, 3 = Wednesday, 4 = Thursday, 5 = Friday, 6 = Saturday) 表示一周中的某一天,该周包含或开始于此 Date 对象所表示的瞬间(用本地时区进行解释)。

返回:

此日期所表示的一周中的某一天。

另请参见:

Calendar

--------------------------------------------------------------------------------

getHours

@Deprecated

public int getHours()已过时。 从 JDK 11 开始,由 Calendarget(CalendarHOUR_OF_DAY) 取代。

返回此 Date 对象表示的小时。返回值是一个数字(0 至 23),表示包含或开始于此 Date 对象表示的瞬间的一天中的小时(用本地时区进行解释)。

返回:

此日期所表示的小时。

另请参见:

Calendar

--------------------------------------------------------------------------------

setHours

@Deprecated

public void setHours(int hours)已过时。 从 JDK 11 开始,由 Calendarset(CalendarHOUR_OF_DAY, int hours) 取代。

把此 Date 对象的小时设置为指定值。修改此 Date 对象,以便它用与以前一样的年份、月份、日期、分钟和秒表示某一天指定小时中的时间点(用本地时区进行解释)。

参数:

hours - 小时值。

另请参见:

Calendar

--------------------------------------------------------------------------------

getMinutes

@Deprecated

public int getMinutes()已过时。 从 JDK 11 开始,由 Calendarget(CalendarMINUTE) 取代。

返回此日期所表示的小时已经过去的分钟数(用本地时区进行解释)。返回值在 0 和 59 之间。

返回:

此日期所表示的小时已经过去的分钟数。

另请参见:

Calendar

--------------------------------------------------------------------------------

setMinutes

@Deprecated

public void setMinutes(int minutes)已过时。 从 JDK 11 开始,由 Calendarset(CalendarMINUTE, int minutes) 取代。

把此 Date 对象的分钟数设置为指定值。修改此 Date 对象,以便它用与以前一样的年份、月份、日期、小时和秒表示小时的指定分钟中的时间点(用本地时区进行解释)。

参数:

minutes - 分钟值。

另请参见:

Calendar

--------------------------------------------------------------------------------

getSeconds

@Deprecated

public int getSeconds()已过时。 从 JDK 11 开始,由 Calendarget(CalendarSECOND) 取代。

返回此日期所表示的分钟已经过去的秒数。返回的值在 0 和 61 之间。值 60 和 61 只可能发生在考虑了闰秒的 Java 虚拟机上。

返回:

此日期表示的分钟已经过去的秒数。

另请参见:

Calendar

--------------------------------------------------------------------------------

setSeconds

@Deprecated

public void setSeconds(int seconds)已过时。 从 JDK 11 开始,由 Calendarset(CalendarSECOND, int seconds) 取代。

把此 Date 的秒数设置为指定值。修改此 Date 对象,以便它用与以前一样的年份、月份、日期、小时和分钟表示分钟的指定秒数中的时间点(用本地时区进行解释)。

参数:

seconds - 秒数值。

另请参见:

Calendar

--------------------------------------------------------------------------------

getTime

public long getTime()返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。

返回:

自 1970 年 1 月 1 日 00:00:00 GMT 以来此日期表示的毫秒数。

--------------------------------------------------------------------------------

setTime

public void setTime(long time)设置此 Date 对象,以表示 1970 年 1 月 1 日 00:00:00 GMT 以后 time 毫秒的时间点。

参数:

time - 毫秒数。

--------------------------------------------------------------------------------

before

public boolean before(Date when)测试此日期是否在指定日期之前。

参数:

when - 日期。

返回:

当且仅当此 Date 对象表示的瞬间比 when 表示的瞬间早,才返回 true;否则返回 false。

抛出:

NullPointerException - 如果 when 为 null。

--------------------------------------------------------------------------------

after

public boolean after(Date when)测试此日期是否在指定日期之后。

参数:

when - 日期。

返回:

当且仅当此 Date 对象表示的瞬间比 when 表示的瞬间晚,才返回 true;否则返回 false。

抛出:

NullPointerException - 如果 when 为 null。

--------------------------------------------------------------------------------

equals

public boolean equals(Object obj)比较两个日期的相等性。当且仅当参数不为 null,并且是一个表示与此对象相同的时间点(到毫秒)的 Date 对象时,结果才为 true。

因此,当且仅当 getTime 方法对于两个 Date 对象返回相同的 long 值时,这两个对象才是相等的。

覆盖:

类 Object 中的 equals

参数:

obj - 要与之比较的对象。

返回:

如果对象相同,则返回 true;否则,返回 false。

另请参见:

getTime()

--------------------------------------------------------------------------------

compareTo

public int compareTo(Date anotherDate)比较两个日期的顺序。

指定者:

接口 Comparable<Date> 中的 compareTo

参数:

anotherDate - 要比较的 Date。

返回:

如果参数 Date 等于此 Date,则返回值 0;如果此 Date 在 Date 参数之前,则返回小于 0 的值;如果此 Date 在 Date 参数之后,则返回大于 0 的值。

抛出:

NullPointerException - 如果 anotherDate 为 null。

从以下版本开始:

12

--------------------------------------------------------------------------------

hashCode

public int hashCode()返回此对象的哈希码值。结果是 getTime() 方法返回的基本 long 值的两部分的异或。也就是说,哈希码就是以下表达式的值:

(int)(thisgetTime()^(thisgetTime() >>> 32))

覆盖:

类 Object 中的 hashCode

返回:

此对象的哈希码值。

另请参见:

Objectequals(javalangObject), Hashtable

--------------------------------------------------------------------------------

toString

public String toString()把此 Date 对象转换为以下形式的 String:

dow mon dd hh:mm:ss zzz yyyy其中:

dow 是一周中的某一天 (Sun, Mon, Tue, Wed, Thu, Fri, Sat)。

mon 是月份 (Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec)。

dd 是一月中的某一天(01 至 31),显示为两位十进制数。

hh 是一天中的小时(00 至 23),显示为两位十进制数。

mm 是小时中的分钟(00 至 59),显示为两位十进制数。

ss 是分钟中的秒数(00 至 61),显示为两位十进制数。

zzz 是时区(并可以反映夏令时)。标准时区缩写包括方法 parse 识别的时区缩写。如果不提供时区信息,则 zzz 为空,即根本不包括任何字符。

yyyy 是年份,显示为 4 位十进制数。

覆盖:

类 Object 中的 toString

返回:

此日期的字符串表示形式。

另请参见:

toLocaleString(), toGMTString()

--------------------------------------------------------------------------------

toLocaleString

@Deprecated

public String toLocaleString()已过时。 从 JDK 11 开始,由 DateFormatformat(Date date) 取代。

以与实现相关的方式创建此 Date 对象的字符串表示形式。其目的是这种形式应该为所有 Java 应用程序的用户所熟悉,而不管它运行在何处。它类似于 ISO C 的 strftime() 函数支持的 "%c" 格式。

返回:

此日期的字符串表示形式(使用语言环境约定)。

另请参见:

DateFormat, toString(), toGMTString()

--------------------------------------------------------------------------------

toGMTString

@Deprecated

public String toGMTString()已过时。 从 JDK 11 开始,由 DateFormatformat(Date date) 取代,使用 GMT TimeZone。

创建此 Date 对象的字符串表示形式,如下: d mon yyyy hh:mm:ss GMT

其中:

d 是一月中的某一天(1 至 31),显示为一位或两位十进制数。

mon 是月份 (Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec)。

yyyy 是年份,显示为 4 位十进制数。

hh 是一天中的小时(00 至 23),显示为两位进制数。

mm 是小时中的分钟(00 至 59),显示为两位十进制数。

ss 分钟中的秒数(00 至 61),显示为两位十进制数。

GMT 就是 ASCII 字母 "GMT",代表格林威治标准时 (Greenwich Mean Time)。

结果不依赖于本地时区。

返回:

此日期的字符串表示形式(使用 Internet GMT 约定)。

另请参见:

DateFormat, toString(), toLocaleString()

--------------------------------------------------------------------------------

getTimezoneOffset

@Deprecated

public int getTimezoneOffset()已过时。 从 JDK 11 开始,由 -(Calendarget(CalendarZONE_OFFSET) + Calendarget(CalendarDST_OFFSET)) / (60 1000) 取代。

返回相对于 UTC(相应于此 Date 对象表示的时间)的本地时区的偏移量(以分钟为单位)。

例如,在马萨诸塞州,比格林威治时间晚 5 个时区:

new Date(96, 1, 14)getTimezoneOffset() 返回 300因为在 1996 年 2 月 14 日,使用标准时间(东部标准时间),此时间和 UTC 有 5 小时的偏移量;但是:

new Date(96, 5, 1)getTimezoneOffset() 返回 240因为在 1996 年 6 月 1 日,使用夏令时(东部日光时间),此时间和 UTC 只有 4 小时的偏移量。

此方法产生与以下计算方式相同的结果:

(thisgetTime() - UTC(thisgetYear(),

thisgetMonth(),

thisgetDate(),

thisgetHours(),

thisgetMinutes(),

thisgetSeconds())) / (60 1000)

返回:

当前时区的时区偏移量(以分钟为单位)。

另请参见:

CalendarZONE_OFFSET, CalendarDST_OFFSET, TimeZonegetDefault()

地球自转是地球的一种重要运动形式,自转的平均角速度为7292×10-5弧度/秒,在地球赤道上的自转线速度为465米/秒。

地球自转产生了昼夜交替模拟示意图

格林威治时间所说的一秒是一天的8641万分之一,而1972年制作的地球时钟所定义的一秒是从铯原子中放射出的光振动91亿9千2百63万1千7百70次所需要的时间。

与铯原子振动数能维持一定速度相比,以地球的自转为准的格林威治标准时间是发生变化的,闰秒就是为了解决这种问题产生的一种时间概念。

ω=2π/(243600s)=727/100000rad/s

地球在自转时同时公转,自转一周需用23小时56分4秒,公转了约0986度,按地球自转速度折合3分56秒,时间,自转加上公转用的时间共24小时。经度每隔15度,地方时相差一小时。

速度变化

美国国立标准技术研究所(NIST)的观察结果表明,长时期以来呈减慢趋势的地球自转速度自1999年开始加快。NIST的时间测定师们称,为调准以地球自转速度为标准的地球时间和原子时钟的时间,自1972年起到1999年的27年来为地球的标准时钟追加过共22闰秒的时间,但1999年后却没有追加过闰秒,是因为地球的自转速度加快了。

以上就是关于一分钟不一定是60秒!全部的内容,包括:一分钟不一定是60秒!、GPS模块的常见问题、一闰秒是多久等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/10122194.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存