马上就要五一劳动节放假了,忙碌了半年,准备趁着假期出去放松放松,于是开始准备行程。女朋友听说日本5月份可以看樱花,于是她在看去日本的航班。我在旁边默默的看了下我的信用卡额度。


如上图,飞机13:40从杭州萧山机场起飞,17:50在东京成田机场降落。但是实际上,飞机整个航行确实只飞行了3小时10分。

因为日本时间比中国时间早一个小时。日本的17:50相当于国内的16:50。飞机实际上只飞了3小时而已。

时区

很久以前,在没有钟表的年代,人们通过观察太阳决定时间,一开始人们根据太阳挂在天空的位置来大致的确定时间,慢慢的人们根据太阳照射到的物体投下的影子来确定时间。

如古代人们使用的日晷,就是人类古代利用日影测得时刻的一种计时仪器。


在一天中,被太阳照射到的物体投下的影子在不断地改变着:

第一是影子的长短在改变。早晨的影子最长,随着时间的推移,影子逐渐变短,一过中午它又重新变长;

第二是影子的方向在改变。在北回归线以北的地方,早晨的影子在西方,中午的影子在北方,傍晚的影子在东方。从原理上来说,根据影子的长度或方向都可以计时,但根据影子的方向来计时更方便一些。故通常都是以影子的方位计时。

随着时间的推移,晷针上的影子慢慢地由西向东移动。移动着的晷针影子好像是现代钟表的指针,晷面则是钟表的表面,以此来显示时刻。

但是,由于地球的自转,这就使得不同经度的地方的时间有所不同(地方时)。东边的地点比西边的地点先看到日出,东边地点的时刻较早,西边地点的时刻较晚。

世界各个国家位于地球不同位置上,因此不同国家,特别是东西跨度大的国家日出、日落时间必定有所偏差。这些偏差就是所谓的时差。

为了照顾到各地区的使用方便,又使其他地方的人容易将本地的时间换算到别的地方时间上去,1863年,人们首次提出了时区的概念。

有关国际会议决定将地球表面按经线从东到西,划成一个个区域,并且规定相邻区域的时间相差1小时。


在同一区域内的东端和西端的人看到太阳升起的时间最多相差不过1小时。当人们跨过一个区域,就将自己的时钟校正1小时(向西减1小时,向东加1小时),跨过几个区域就加或减几小时。

就像我们如果去日本旅游,我们的手表时间显示的是中国时间,为了适应当地的时间,就需要将其校正一个小时。

现今全球共分为24个时区。

格林威治时间

我们说中国在时区上是东八区,一般用GMT+8来表示,日本是东九区,一般用GMT+9来表示。

其实就是说中国时间是在GMT时间的基础上加8个小时,而日本时间是在GMT时间的基础上加9个小时。所以日本时间会比中国时间快一个小时。

那么到底什么是GMT呢?

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

自1924年2月5日开始,格林尼治天文台负责每隔一小时向全世界发放调时信息。国际天文学联合会于1928年决定,将由格林威治平子夜起算的平太阳时作为世界时,也就是通常所说的格林威治时间。


由于地理位置不同,中国和日本分属于不同的时区,采用的时间标准也就不同。而规定中相邻的时区中时间间隔是1小时,又由于中国属于东八区,日本属于东九区,所以中国时间是GTM+8,日本时间是GMT+9,所以,日本时间比中国时间快一个小时。

理论时区与法定时区

理论时区以被15整除的子午线为中心,向东西两侧延伸7.5度,即每15°划分一个时区,这是理论时区。


理论时区的时间采用其中央经线(或标准经线)的地方时。所以每差一个时区,区时相差一个小时,相差多少个时区,就相差多少个小时。东边的时区时间比西边的时区时间早。

但是,各个国家和地区具体采用哪个时区其实是自己可以决定的,理论时区只是建议性的。为了避开国界线,有的时区的形状并不规则,而且比较大的国家以国家内部行政分界线为时区界线,这是实际时区,即法定时区

例如,中国幅员宽广,在理论时区上,差不多跨5个时区,包括东五区、东六区、东七区、东八区以及东九区。如果严格按照地理划分的话,那么乌鲁木齐的时间可能和黑龙江的时间相差四个小时。


但是,为了方便管理和使用,中国的法定时区以东八时区的标准时即北京时间为准。所以,中国时间俗称北京时间。

好处自然不言而喻,大家统一使用同一个时间,就是比较方便。缺点也比较明显,就是同样是早上四点,有的地区天已经亮了,但是有些地方还是黑的。

虽然本文介绍的中国和日本这两个国家都是使用唯一法定时区的。但是,还是有很多国家并不是使用统一的时区的。

如美国各州的时区,基本上按地理位置,也就是经度区分的,也许美国是执行的最标准者之一。


战斗民族俄罗斯的时区也并不统一,比如处在几乎差不多为止的叶卡捷琳堡和鄂木斯克就执行了两个时区。这种情况大多数和历史有关。


代码中获取不同时区的时间

Java中使用TimeZone 表示时区偏移量。TimeZone对象给我们的是原始的偏移量,也就是与GMT相差的微秒数,即TimeZone表示时区偏移量,本质上以毫秒数保存与GMT的差值。

获取TimeZone可以通过时区ID,如"America/New_York",也可以通过GMT+/-hh:mm来设定。例如北京时间可以表示为GMT+8:00。

当我们想要输出美国洛杉矶时间时,可以选择这种方式:

TimeZone.setDefault(TimeZone.getTimeZone("America/Los_Angeles"));Date date = new Date();System.out.println(date);

需要注意的是,以下代码是无法获得美国洛杉矶时间的:

System.out.println(Calendar.getInstance(TimeZone.getTimeZone("America/Los_Angeles")).getTime());

因为当我们使用System.out.println来输出一个时间的时候,他会调用Date类的toString方法,而该方法会读取操作系统的默认时区来进行时间的转换。只有修改了默认时区才会显示该时区的时间。

但是,通过阅读Calendar的源码,我们可以发现,getInstance方法虽然有一个参数可以传入时区,但是并没有将默认时区设置成传入的时区。

而在Calendar.getInstance.getTime后得到的时间只是一个时间戳,其中未保留任何和时区有关的信息,所以,在输出时,还是显示的是当前系统默认时区的时间。

Java8提供了一套新的时间处理API,这套API比以前的时间处理API要友好的多。

Java8 中加入了对时区的支持,带时区的时间为分别为:ZonedDate、ZonedTime、ZonedDateTime。其中每个时区都对应着 ID,地区ID都为 “{区域}/{城市}”的格式,如Asia/Shanghai、America/Los_Angeles等。

在Java8中,直接使用以下代码即可输出美国洛杉矶的时间:

LocalDateTime now = LocalDateTime.now(ZoneId.of("America/Los_Angeles"));System.out.println(now);


好文章那么多,千万别走散了

进入蓝桥微官网,技术干货

new date.gettime 与传入时间相差毫秒数不对_给女票解释为什么日本时间比中国时间快一个小时?...相关推荐

  1. java 获取当前时间的毫秒数

    记录一下关于获取当前时间毫秒数的三种方法 /*** 获取当前时间的毫秒数* @author laziji**/ public class Test{public static void main(St ...

  2. 常用时间格式毫秒数、年月日、国际通用时间之间相互转换(常用)

    JS实现时间格式毫秒数.年月日.国际通用时间转换 写在前面 1.毫秒数转年月日格式 2.国际通用时间转年月日格式 3.年月日格式换毫秒数 写在前面 本篇文章主要介绍JS实现毫秒数.年月日时间.国际通用 ...

  3. php记录当前毫秒,php获取当前时间的毫秒数的方法

    php获取当前时间的毫秒数的方法 php本身没有提供返回毫秒数的函数,但提供了一个microtime()函数,该函数返回一个array,包含两个元素,一个是秒数,一个是小数表示的毫秒数,借助此函数,可 ...

  4. linux mysql udf打包_Linux下MySQL 5.1编写UDF 并运行(Install)获取当前时间的毫秒数...

    Mysql 无法获取当前时间的毫秒数自行定制UDF,以提供current_ms方法1. 编写 C 文件#ifdef STANDARD#include lt;stdio.hgt;#inc Mysql 无 ...

  5. php得到时间 毫秒数,php获取毫秒_php获取当前时间的毫秒数

    摘要 腾兴网为您分享:php获取当前时间的毫秒数,中信金通,中日翻译,中国天气,夜读小说等软件知识,以及2265游戏盒,球球大作战,美业店务,黑手党3,互联空间,文本文档软件,upx脱壳,兔小贝儿歌, ...

  6. php 计算时间毫秒数,php获取毫秒_php获取当前时间的毫秒数

    摘要 腾兴网为您分享:php获取当前时间的毫秒数,夜读小说,虚拟按键,唯品会,调音器等软件知识,以及闪优360手柄,中国干部,大连快线,免vip网站,台达温控器,手淘链接转换,赢顺云期货交易,音序器, ...

  7. php 时间格式 毫秒,php获取当前时间的毫秒数详解

    php获取当前时间的毫秒数详解 var runtimes = 0; function GetRTime(){ var nMS = <?php echo $lefttime; ?>*1000 ...

  8. 获取时间戳(1970年1月1日零点整至当前时间的毫秒数)

    C# 时间戳格式一 /// <summary>/// 获取时间戳(1970年1月1日零点整至当前时间的毫秒数)/// </summary>/// <returns> ...

  9. 漫话:如何给女朋友解释为什么日本时间比中国时间快一个小时

    ​ 马上就要五一劳动节放假了,忙碌了半年,准备趁着假期出去放松放松,于是开始准备行程.女朋友听说日本5月份可以看樱花,于是她在看去日本的航班.我在旁边默默的看了下我的信用卡额度.  如上图,飞机13 ...

最新文章

  1. 主键需要键索引吗_MySQL 索引的知识点都在这里了,建议收藏!
  2. 福利 | 大数据新媒体平台面向清华校内师生开放!
  3. VS出现异常?!和十进制转二进制比是小事
  4. 基于PSR-0编码规范开发一套PHP-MVC框架(一)
  5. sdwan能取代mpls吗?—Vecloud
  6. delphi中的bpl开发注意事项
  7. 在小程序中将多个view居中显示
  8. Java中的宏变量,宏替换详解。
  9. 动手学CV-目标检测入门教程6:训练与测试
  10. php上传文件的目录,php文件上传及下载附带显示文件及目录功能
  11. linux man指令问题
  12. Atitit 歌词成语提取项目 nlp 人工智能项目 目录 1.1. 流程 首先搜集3w成语词库 1 1.2. 歌词常用成语400个 按照拼音排序 1 1.1.流程 首先搜集3w成语词库 放入m
  13. 下载外网资源慢的解决办法
  14. PHP计算GPS路书,搜狗地图推出路书功能 免费而智能的GPS
  15. Web端和移动端接入萤石云平台的视频数据
  16. WRF模式案例运行初体验--飓风示例全过程记录
  17. 对于electron-react-boilerplate(ERB)的学习笔记
  18. 2020主流室内定位技术对比
  19. centos执行yum命令报错,There are no enable repos
  20. MicroBlaze系列教程(1):AXI_GPIO的使用

热门文章

  1. Scott用户的表结构
  2. 【汇编】C++ 函数调用之——有参无返回调用(传指针)
  3. 在别人那看到的很不错的ext.net的基本讲解
  4. cisco 路由器访问权限的设置
  5. 项目Alpha冲刺 Day11
  6. 我们来谈谈面向指针编程的那些事
  7. 求最大公约数的设计与C语言实现
  8. Mono.Cecil C#代码注入
  9. EXCEL的下拉列表
  10. 分析模式 - 度量与测绘