javascript笔记--(第九章)日期与时间

来源:互联网 发布:pip安装tensorflow 编辑:程序博客网 时间:2024/05/14 11:44

Date类型


ECMAScript中的Date类型是在早期Java中java.util.Date类基础上构建的。为此,Date类型使用UTC (Coordinated Universal Time,国际协调时间[又称世界统一时间]) 1970年1月1日午夜(零时)开始经过的毫秒来保存日期。

ECMAScript提供了两个方法,Date.parse()和Date.UTC()。Date.parse()方法接收一个表示日期的字符串参数,然后尝试根据这个字符串返回 1970/1/1 午夜距离该日期时间的毫秒数。ECMA-262没有定义Date.parse()应该支持哪种日期格式,因此方法的行为因实现而异,因地区而异。默认通常接收的日期格式如下:
  • 1.'月/日/年',如6/13/2011;
  • 2.'英文月名 日, 年',如 May 25, 2004;
  • 3.'英文星期几 英文月名 日 年 时:分:秒 时区',如 Tue May 25 2004 00:00:00 GMT-070
<script type="text/javascript">var date1 = Date.parse('6/13/2017 0:0:1');//相当于Mon Jun 13 2017 00:00:01 GMT+0800console.log(date1);//1497283201000var date2 = Date.parse('Jun 13,2017 00:00:02');console.log(date2);//1497283202000var date3 = Date.parse('Mon Jun 13 2017 00:00:00 GMT+0800');console.log(date3);//1497283200000</script>
日期后面可以跟时间

Date.UTC()方法同样也返回表示日期的毫秒数,但它与Date.parse()在构建值时使用不同的信息。(年份,基于0的月份[0表示1月,1表示2月],月中的哪一天[1-31],小时数[0-23],分钟,秒以及毫秒)。只有前两个参数是必须的。如果没有提供月数,则天数为1;如果省略其他参数,则统统为0。

<script type="text/javascript">var date1 = Date.UTC(2017,5,13,0,0,1,10);//年,月,日,时,分,秒,毫秒console.log(date1);//1497312001010,也是返回1970/1/1 午夜距离该日期时间的毫秒数</script>

日期方法


与其他类型一样,Date类型也重写了toLocaleString()、toString()和valueOf()方法。
<script type="text/javascript">var date1 = new Date(Date.UTC(2017,5,13,0,0,1,10));//年,月,日,时,分,秒,毫秒console.log(date1.toString());//Tue Jun 13 2017 08:00:01 GMT+0800 (中国标准时间)console.log(date1.toLocaleString());//2017/6/13 上午8:00:01console.log(date1.valueOf());//1497312001010</script>
注意:toString和toLocaleString在不同的浏览器上可能不一样,一般不用这两个方法来显示时间

其他的一些方法:
<script type="text/javascript">var date1 = new Date();console.log(date1.toDateString());//Thu Feb 02 2017console.log(date1.toLocaleDateString());//2017/2/2console.log(date1.toTimeString());//15:51:07 GMT+0800 (中国标准时间)console.log(date1.toLocaleTimeString());//下午3:51:07console.log(date1.toUTCString());//Thu, 02 Feb 2017 07:52:32 GMT</script>

组件方法

组件方法,是为我们单独获取你想要的各种时间/日期而提供的方法。需要注意的时候,这些方法中,有带UTC的,有不带UTC的。UTC日期指的是在没有时区偏差的情况下的日期值

<script type="text/javascript">var box = new Date(Date.UTC(2017,2,10,5,15,10));console.log('毫秒:'+box.getTime());//1489122910000,获取日期的毫秒数,和valueOf()返回一致console.log('年:'+box.getFullYear());//2017,获取四位年份console.log('月:'+(1+box.getMonth()));//3,获取月份,没指定月份,从0开始算起console.log('日:'+box.getDate());//10,获取日期console.log('星期:'+box.getDay());//5,返回星期几,0表示星期日,6表示星期六console.log('时:'+box.getHours());//13,返回时,这里获得的是北京时间,加上了8个时区console.log('UTC时:'+box.getUTCHours());//5,返回时console.log('分:'+box.getMinutes());//15,返回分钟console.log('秒:'+box.getSeconds());//10,返回秒数console.log('毫秒:'+box.getMilliseconds());//0,返回毫秒数console.log(box.getTimezoneOffset());//-480,返回本地时间和UTC时间相差的分钟数,480/60=8</script>
上面所有的方法除了getDay()和getTimezoneOffset(),都有相应的set方法,如setTime(),setFullYear(),并且除了getTimezoneOffset(),所有的set和get方法都有相应的UTC方法,如getUTCTime(),setUTCTime(),getUTCHours(),setUTCHours()。

0 0