李东的技术博客

文章内容Content

JS中关于时间的那点破事儿

2016/09/18 256 ℃ 抢个沙发

by LiDong from https://www.lidongtech.com/time-on-the-disturbing-thing-with-js.html
本文可全文转载,但需得到原作者书面许可,同时保留原作者和出处。如果只是引流,请随意~

时间似乎是一个永恒的话题,牛顿的时代认识空间和时间都是不变的。尤其牛顿他老人家,到死都坚信宇宙是和谐的,空间和时间亘古不变。

牛顿和苹果

牛顿和苹果

后来出了个爱因斯坦,这货牛啊,直接重新定义时间和空间的概念推翻了牛顿时空观的统治地位。于是人们从宇宙的高度去重新认识理解宇宙。理解时间的本质那是科学家们做的工作,我们的脑容量还达不到能理解那么抽象数学模型和物理模型的程度。但是尼,我们是程序员,还是实际处于鄙视链最底层而实际意义却在最顶层的前端工程师,有一些前端特效或者前后端对接难免会需要准确的时间标准,这样我们就不得不去了解在JS中的关于时间的操作。不过在详细总结梳理知识点之前,先要搞清楚几个概念。

强壮的爱因斯坦

强壮的爱因斯坦

Unix时间戳(Unix timestamp),或称Unix时间(Unix time)、POSIX时间(POSIX time),是一种时间表示方式,定义为从格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。Unix时间戳不仅被使用在Unix系统、类Unix系统中(比如Linux系统),也在许多其他操作系统中被广泛采用。

Date对象用于处理日期和时间。可以通过new关键词来定义Date对象。通过使用针对日期对象的方法,我们可以很容易地对日期进行操作。

注释:Date对象自动使用当前的日期和时间作为其初始值。(eg:”Tue Jul 24 14:43:59 1980″)

重要的事情说三遍:Date()是个对象!Date()是个对象!!Date()是个对象!!!

使用关键字new就将对象实例化了,关于实例和对象的区别说多了反而让人混淆,不好意思我也是晕乎乎的,不过按照我的理解还是有一定的办法可以理解两者概念的差异的,我是怎么区分的呢?嘿嘿嘿嘿嘿嘿……

比如说当我提到“美女”这个词,估计每个人脑海中都会浮现出一位美女的形象,虽然这个形象是很模糊的在脑海中浮现出来。但是她的具体相貌、身材、发型、衣着、表情、姿势都没有很详细的细节浮现。这个时候这位可怜的影影倬倬的“美女”就是对象。如果我直接给你一张美女的照片,例如下面vicni妹子的图片。

那么这个时候你估计直接就开口说“哎哟~卧槽,美女!!”。有了图片的帮助美女的概念一下子清晰了起来,这个就是实例。实例都是对象,但是对象不一定是实例。有了美女的帮助,我们能相对不模糊的去理解实例和对象的概念了,感谢美女的无私帮助。

既然是对象,那么我们就有可以操作对象的方法。这些方法才是我们解决问题最好的方法。在项目中,前端在接受后端发送的json等信息的时候关于时间,有的时候是标准时间,有的时候是毫秒时间戳。怎么去处理时间数据也是前端经常遇见的问题,如何去解决这个问题就是我们存在的意义之一。

我们可以使用

得到时间戳,有些人会很好奇为什么后面要除以一千呢?因为getTime()方法得到的是毫秒,1000毫秒等于1秒,想把结果转换成秒就必须除以1000。这样我们就带出了第一时间转化成时间戳的方法getTime()。在JS中把时间转换成时间戳的方式主要有三种。

我们已经可以把时间转变成毫秒级的时间戳了,那么如何把毫秒级别的时间戳转变为标准时间呢?这个时候就需要setTime()方法。它是毫秒设置Date对象。然后我们就可以利用其它方法来得到我们想要的日期值或者格式。

常用的方法就是这么多,这些已经可以满足我们相当大部分的需求了。关于JS中时间的部分也就这么点,看了看了文章,有自己写的也有复制的,看来可以结束了。陪媳妇加班,媳妇已经干完活了,我也要陪她逛街,就此结束吧!

(报告完毕!)
本文标签:标签:,