Date对象的那些事儿

栏目: 服务器 · 发布时间: 7年前

内容简介:前两天做了个需求需要Unix时间戳和北京时间的各种转换,其中Date对象用到的极多,今天就来讲讲我所了解到的Date对象。hin简单~

前两天做了个需求需要Unix时间戳和北京时间的各种转换,其中Date对象用到的极多,今天就来讲讲我所了解到的Date对象。

这就开始了

hin简单~

var date = new Date();

这时的时间是当前时间。

那么Date都可以用什么来作为 参数 呢?

1、Date对象可以使用指定时间到1970年1月1日00:00:00 UTC的 毫秒数 做参数。

Date对象的那些事儿

看到上面的结果是不是有点奇怪,当参数为0时返回的不应该是1970年1月1日00:00:00吗?这里应该是使用了格林尼治标准时间作为计时标准,中国的时间比格林威治标准时间快8个小时,所以就是8点,而不是0点啦。(突然想到周董的一段歌词,“我占据格林威治守候着你,在时间标准起点回忆过去,你却在永夜了的极地旅行”,格林威治是世界计算时间和地理经度的起点,但是现在GMT时间已经不再被科学界确定,还有一个最接近GMT的世界时间标准,就是UTC啦)

2、参数也可以是( 年,月,日,时,分,秒 ),其中至少需要两个整数,否则就会被当做1中例子里的毫秒数了。

这里的月份是0~11,所以下面的例子月份为5时是June六月

Date对象的那些事儿

当然,这里的参数也可以是 负数 ,就表示相对当前设定时间扣掉的时间。比如下图第一个例子,月份使用了负数,于是就从2015年1月1日为基准,扣掉五个月,变为了2014年8月

Date对象的那些事儿

3、我们再看看0,1,-1这三个特殊数字做参数的情况。如果年份使用0,则表示的是1900年,为负数就变成了公元前。

Date对象的那些事儿

4、当然,除了整数,还可以用 日期的字符串 作为参数

Date对象的那些事儿

任意搭配都可以得到正确的时间,棒棒哒!

Date对象中有很多 方法 ,这里我只挑一些常用的来说下。

1、 Date() 返回当前的时间

Date对象的那些事儿

无论你在中间加什么参数,永远返回当前时间

Date对象的那些事儿

2、 getDate() 返回指定时间的某一天(1~31)

getDay()返回指定时间的星期数(0~6)

getMonth()  返回指定时间的月份(0~11)

getFullYear()返回指定时间的四位数年份

 getHours()返回指定时间的小时(0~23)

getMinutes()返回指定时间的分钟数(0~59)

getSeconds()返回指定时间的秒数(0~59)

getMilliseconds()返回指定时间的毫秒数(0~999)

Date对象的那些事儿

3、 getTime() 返回1970年1月1日00:00:00到指定时间的毫秒数,就是UNIX时间数的1000倍

Date对象的那些事儿

也就是说,UNIX时间和时间字符串相互转换可以这样

Date对象的那些事儿

除了getTime(),将时间字符串转换成毫秒数的方法还有 +Date()Number(Date)Date.parse()

Date对象的那些事儿

Date()和new Date()

上面的例子里有用到Date()和new Date(),返回结果的状态也是不同的,在这里总结一下。

Date对象的那些事儿

可以看出,Date()无论有没有参数都是返回的当前时间的字符串,而new Date()会根据参数返回对应时间的字符串

分分钟写个小日历

使用Date()对象的一个简单的应用当然就是写日历了~

首先,我们需要判断当前月份的第一天是星期几

var date = new Date();
var year = date.getFullYear();
var month = date.getMonth();
var firstDay,
  getFirstDay;
function getFirstDay (year, month)  {
    firstDay = new Date(year, month, 1);
    getFirstDay = firstDay.getDay();
}

然后再判断当前月份的天数。选用的办法是使用当前月份下个月的1日的时间减去1个小时,这样就回到了当前月份最后一天,再获取当前日期即可。

function getMonthDays (year, month) {
    var nextMonth = new Date(year, month + 1, 1),
           getMonthDays;
    nextMonth.setHours(nextMonth.getHours() - 1);
    getMonthDays = nextMonth.getDate();
}

剩下的就是将数据填充到表格里就可以啦~

但是日历并不只能看当前月份,还可以查前一个月后一个月,那么只需要加两个按钮,点击后月份减1或加1即可。

具体代码在下面~

https://github.com/yanagao/Date.git

1970年的元旦

众所周知,所有的编程语言都是要从1970年1月1日开始计算时间,这个时间是有什么特殊的含义吗?在1970年的元旦0点0分0秒到底发生了什么?

上面我们提到了一个UNIX时间,就是指从1970年1月1日0时0分0秒起至现在的总秒数。我们都知道,系统有32位也有64位,那么如果把UNIX时间用32位二进制数表示,只能够表示到2147483647秒,也就是到 Tue Jan 19 2038 11:14:07 这个时间就是极限了,超过这个时间,就会变成负数,系统就挂了。在以前那个只有32位操作系统的年代,可能觉得38年之前就会有解决办法吧(⊙﹏⊙)b。年初的时候流传了iPhone变砖的方法,如果你把iPhone的系统时间调到1970年1月1日,重启手机就变砖了,不舍得用自己手机试验的同学纷纷去了苹果体验店。有网友就猜测,因为中国在东8区,比格林威治时间快8个小时,也就是说北京时间1970年1月1日00:00:00对应的是1969年12月31日16:00:00,UNIX时间为负,所以手机变砖,但是没法证实这个猜测的正确性┑( ̄Д  ̄)┍。

现在的操作系统大部分都为64位,可以表示至少到2 63 ,经过各种不严密计算,可以算出64位二进制至少可以表示2924.7亿年,应该就不用担心系统挂掉的问题了┑( ̄Д  ̄)┍。


以上所述就是小编给大家介绍的《Date对象的那些事儿》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Usability for the Web

Usability for the Web

Tom Brinck、Darren Gergle、Scott D. Wood / Morgan Kaufmann / 2001-10-15 / USD 65.95

Every stage in the design of a new web site is an opportunity to meet or miss deadlines and budgetary goals. Every stage is an opportunity to boost or undercut the site's usability. Thi......一起来看看 《Usability for the Web》 这本书的介绍吧!

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

URL 编码/解码
URL 编码/解码

URL 编码/解码

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具