首页天道酬勤每天24小时时间段划分(为什么一天24小时制)

每天24小时时间段划分(为什么一天24小时制)

admin 12-05 05:36 238次浏览

原文:味小姐味小姐(微信微信官方账号ID: xjjdog),欢迎分享,转载请保留来源。

今天清理邮件,发现这样的垃圾邮件。虽然最近美国股市很烦躁,但是我没钱花在这无聊的事情上。我有一笔钱,蹲在a股的一只退市股票上。因为失去太多,现在只剩下一个梦。

这条消息让我感兴趣的是lkdyg。这个词我在很多地方都见过。它总是让我想起炎热浪漫的海滩,阳光下撅着屁股的柜子,被暴力抛上来又破碎的海浪。

魔幻的时间

关于时间的问题,我们先来看一段神奇的代码。

simpledate format SDF=new simpledate format(' yyyy-MM-DD hh :MM 3360s ');

string StiMe=' 2020-03-08 00:00:00 ';

SDF . settimezone(time zone . gettimezone(' America/New York '));

时区设置默认值(时区设置时区('美洲/纽约'));

日期时间=SDF . parse(StiMe);

system . out . println(time . gettime());

system . out . println(time);

日历CD=calendar . getinstance();

cd.setTime(时间);//两小时后是什么时候?cd.add(日历。HOUR,2);time=CD . GetTime();

system . out . println('-');

system . out . println(time . gettime());

system . out . println(time);我们从字符串中生成了一个时间,这是上面电子邮件中提到的时间。然后又增加了两个小时。结果在它运行的时候,神奇的事情发生了:打印出来的结果显示两次相差3个小时!

有图为证。

该死的。

这就是时间神奇的一面。

Lkdyg会导致一天多一个小时或少一个小时。

要理解lkdyg,首先需要理解时区的概念。《时间的秩序》这本书里解释了时区的诞生其实是各种方案的结果。最后,世界被分成24个时区,每个时区跨越15个经度。

其中,北京时间是我国采用国际时区东8时区的标准时间,也是我们现在使用的时间,但它的位置是山西蒲城。

但在清朝,北京中轴线上的鼓楼被用作标准时间。Xjjdog在那里呆了一段时间,那是一个非常美丽和安静的地方。

00-1010太没用了,我们来看看常见的GMT和UTC。

一般来说,UTC和GMT的介绍都比较晦涩。我们在代码中通常会遇到四种时间,下面会用人类的话来解释。

00-1010格林威治标准时间是指伦敦郊区皇家格林威治天文台的标准时间,因为本初子午线被定义为穿过它的子午线。

为什么能成为本初子午线,不是地理原因,而是历史原因。如果我有发言权,我会把神奇的百慕大三角,现在西经64 45 '设为0度。

时间计时

UTC和GMT一般被认为是无差别的表示。但是GMT是用地球自转来衡量的,这个富贵橙就没那么准确了。

UTC是原子时,比较可靠。每年,格林威治天文台都会发送基于世界协调时的时间信息。

所以你现在看到的是GMT,是旧大陆的计时方式,最先进的计时是UTC。

协调世界时(UTC)是一种基于原子时和秒的时间测量系统,尽可能接近世界时。这涉及到稳定的原子辐射,比地球自转更精确。

UTC原子钟是美国科罗拉多州博尔德最先进的。

的铝离子光钟每237亿年偏差一秒!谁能等到这一天别忘了把我从时光里挖出来。

Unix Time

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

意思就是,1970年前的时间戳,是负数。

为什么是1970?因为早期的机器都是32位的。用32位来表示时间的最大间隔是68年,而最早出现的UNIX操作系统考虑到计算机产生的年代和应用的时限综合取了1970年1月1日作为UNIX TIME的纪元时间。

lkdygDST

下面提到该死的lkdyg。这是一个人为规定的时间。

一般在天亮的早的夏季,人为将时间调快一小时。这样可以使人早起早睡,减少照明量,以充分利用光照资源,从而节约照明用电。全世界有近110个国家每年要实行lkdyg。

它又称“日光节约时制”和“lkdyg间”,在这一制度实行期间所采用的统一时间称为“lkdyg间”。

时间本来就是一个抽象的,看不见摸不着的东西。就连我们的钟表,也会在极限情况下失真。lkdyg让时间更加复杂了一些。

影响

我们可以通过代码发现以下有悖常理的事情:

1)每一天并不总是有24小时,它还有可能是23,有可能是25。2)Date日期处理类打印的并不总是如我们所愿。

public static void dayTime(TimeZone timeZone) {     SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");     System.out.println("Time Zone is " + timeZone.getDisplayName() + " " + timeZone.getID());     Calendar start = Calendar.getInstance(timeZone);     //UTC 1970-01-01     start.setTime(new Date(0));     System.out.println("start=" + fmt.format(start.getTime()));     //current time     long end = Calendar.getInstance(timeZone).getTimeInMillis();     boolean find = false;     for (long i = start.getTimeInMillis(); i < end; i = start.getTimeInMillis()) {         start.add(Calendar.DATE, 1);         if ((start.getTimeInMillis() - i) % TimeUnit.DAYS.toMillis(1) != 0) {             find = true;             System.out.println("from " + fmt.format(new Date(i)) +                     "to " + fmt.format(start.getTime()) +                     " has " + (start.getTimeInMillis() - i) + "ms" +                     "[" + (start.getTimeInMillis() - i) / (3600 * 1000L) + "hours]");         }     }     if (!find) {         System.out.println("Every day is ok.");     } }

代码显示,在中国1986-1991年的这段时间里,一天并不总是有24个小时。

这些肯定是属于比较个性化的数据了。那么,这些数据是从什么地方获取的呢?我们跟踪代码,可以发现sun.util.calendar.ZoneInfo 类。而操作系统存放了每一个时区的具体配置文件,通过它们的配合,就能完成不同地域不同时间的展示。

因为时区问题造成的BUG是时有发生的,尤其是国际项目。由于时区的不同,有可能在录入部分人的出生日期时,会发现多了或者少了一天!比如中国,出生在1986-1991年的这些人,就可能碰到这种幽灵问题。

这一区间的小伙伴注意了,在某一刻,虽然活着,你可能并不存在!

各种时间表示这样转来转去的,总是让人头晕。好的办法就是,把所有的时区,调整成一致的。甚至是mysql,也提供了serverTimezone参数来进行统一协调。

&serverTimezone=Asia/Shanghai

JVM也提供了参数。

-Duser.timezone=GMT+8

几乎每个地方都充斥着这该死的timezone。是我们太弱小了,连个地球都没统一起来。

实际上,lkdyg在中国,从1986-1992只实行了6年,之后就取消了。真是谢天谢地,每一天可以踏踏实实的睡觉,不用担心这些灵异事件了。

加上科技的发达,城里6点就亮起了霓虹灯。哪里还有什么白天黑夜。是时候全部取消lkdyg了,可惜我说了不算(狗头保命)。

End

下次要是有人问你,一天有24个小时么?不要像刚认识数字的小学生一样,行高彩烈的喊是。由于lkdyg的加入,可能在你眨一下眼睛之间,“一个小时”就过去了。

时间是个相对的产物,不同的人有不同的看法。比如,空姐的手表,总是比你的走的慢一些—这就是她们年轻一点的原因。

随着我们对世界的了解,很多以前坚定不移的认为对的事情,已经慢慢的开始腐烂变质。我们只是习惯,但事实从未变过。

就如同你认为现在打字的我是个程序员,但实际上我是一只狗。

意识形态的东西,谁能说得清呢。

作者简介:小姐姐味道 (xjjdog),一个不允许程序员走弯路的公众号。聚焦基础架构和Linux。十年架构,日百亿流量,与你探讨高并发世界,给你不一样的味道。我的个人微信xjjdog0,欢迎添加好友,进一步交流

docker mysql 持久化(docker容器卡死) go框架(adventure time)