JavaScript时间与日期

学习要点:

1.Date类型

2.通用的方法

3.格式化方法

4.组件方法

ECMAScript提供了Date类型来处理时间和日期。Date类型内置一系列获取和设置日期时间信息的方法。

一.Date类型

ECMAScript中的Date类型是在早期Java中java.util.Date类基础上构建的。为此,Date类型使用UTC (Coordinated Universal Time,国际协调时间[又称世界统一时间]) 1970年1月1日午夜(零时)开始经过的毫秒来保存日期。在使用这种数据存储格式的条件下,Date类型保存的日期能够精确到1970年1月1日之前或之后的285616年。

Date()创建一个日期对象,使用new运算符和Date构造方法(构造函数)即可

在调用Date构造方法而不传递参数的情况下,新建的对象自动获取当前的时间和日期。

var box = new Date();                    //创建一个日期对象
alert(box);                    //打印时间对象,返回Thu Nov 03 2016 14:56:21 GMT+0800//不同浏览器显示不同

ECMAScript提供了两个方法,Date.parse()和Date.UTC()。Date.parse()方法接收一个表示日期的字符串参数,然后尝试根据这个字符串返回相应的毫秒数。ECMA-262没有定义Date.parse()应该支持哪种日期格式,因此方法的行为因实现而异,因地区而异。默认通常接收的日期格式如下:

Date.parse()方法接收一个表示日期的字符串参数,然后尝试根据这个字符串返回相应的毫秒数【有参传时间日期格式】

1.'月/日/年',如6/13/2011;

2.'英文月名 日, 年',如 May 25, 2004;

3.'英文星期几 英文月名 日 年 时:分:秒 时区',如 Tue May 25 2004 00:00:00 GMT-070

如果Date.parse()没有传入或者不是标准的日期格式,那么就会返回NaN。

var box = Date.parse('6/13/2011');                    //创建一个日期对象,调用parse方法,传入时间格式
alert(box);                    //打印时间对象,返回1307894400000,时间毫秒数

如果想输出指定的日期,那么把Date.parse()传入Date构造方法里。

var box1 = new Date(Date.parse('6/13/2011'));  //Date.parse获取指定时间的毫秒数,将毫秒数传参给Date()
alert(box1); //返回Mon Jun 13 2011 00:00:00 GMT+0800var box2 = new Date('6/13/2011');             //直接传入指定时间,后台会自动调用Date.parse()方法
alert(box2); //返回Mon Jun 13 2011 00:00:00 GMT+0800

PS:Date对象及其在不同浏览器中的实现有许多奇怪的行为。其中有一种倾向是将超出的范围的值替换成当前的值,以便生成输出。例如,在解析“January 32, 2007”时,有的浏览器会讲其解释为“February 1, 2007”。而Opera则倾向与插入当前月份的当前日期。

Date.UTC()方法接收一个表示日期的字符串参数,返回相应的毫秒数

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

var box = Date.UTC(2016,11); //必传参数年月
alert(box);                //返回1480550400000

如果Date.UTC()参数传递错误,那么就会出现负值或者NaN等非法信息。

alert(Date.UTC());                        //负值或者NaN

如果要输出指定日期,那么直接把Date.UTC()传入Date构造方法里即可。

var box = new Date(Date.UTC(2011,11, 5, 15, 13, 16));   //Date.UTC获取到毫秒数,传给Date()
alert(box);         //返回Mon Dec 05 2011 23:13:16 GMT+0800

var box = new Date(2011,11, 5, 15, 13, 16);   //直接传参给Date()【推荐】
alert(box);         //返回Mon Dec 05 2011 15:13:16 GMT+0800

二.通用的方法

与其他类型一样,Date类型也重写了toLocaleString()、toString()和valueOf()方法;但这些方法返回值与其他类型中的方法不同。

toLocaleString()方法,格式:2016/11/3 下午4:21:03,浏览器有的显示不同

var box = new Date();   //获取系统当前时间
alert(box.toLocaleString()); //将当前时间格式化,2016/11/3 下午4:21:03,浏览器有的显示不同

toString()方法,格式:Thu Nov 03 2016 16:23:22 GMT+0800,返回国际时间格式

var box = new Date();   //获取系统当前时间
alert(box.toString()); //将当前时间格式化,Thu Nov 03 2016 16:23:22 GMT+0800,给直接Date()一样,说明默认调用了toString()方法

valueOf()方法,格式:1478162137197,返回毫秒数

var box = new Date();   //获取系统当前时间
alert(box.valueOf()); //将当前时间格式化,1478162137197,返回毫秒数

PS:这两个方法在不同浏览器显示的效果又不一样,但不用担心,这两个方法只是在调试比较有用,在显示时间和日期上,没什么价值。valueOf()方法显示毫秒数。

三.日期格式化方法

Date类型还有一些专门用于将日期格式化为字符串的方法

toDateString()以特定的格式显示星期几、月、日和年/Thu Nov 03 2016

toTimeString()以特定的格式显示时、分、秒和时区/16:45:47 GMT+0800

toLocaleDateString()以特定地区格式显示、月、日和年/2016/11/3

toLocaleTimeString()以特定地区格式显示时、分、秒和时区/下午4:49:03

toUTCString()以特定的格式显示完整的UTC日期。/Thu, 03 Nov 2016 08:49:53 GMT

var box = new Date();
alert(box.toDateString());                //以特定的格式显示星期几、月、日和年/Thu Nov 03 2016
alert(box.toTimeString());                //以特定的格式显示时、分、秒和时区/16:45:47 GMT+0800
alert(box.toLocaleDateString());            //以特定地区格式显示、月、日和年/2016/11/3
alert(box.toLocaleTimeString());            //以特定地区格式显示时、分、秒和时区/下午4:49:03
alert(box.toUTCString());                //以特定的格式显示完整的UTC日期。/Thu, 03 Nov 2016 08:49:53 GMT

四.组件方法

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

UTC的和不带UTC的相差8个小时

getTime()获取日期的毫秒数,和valueOf()返回一致/1478163539545

var box = new Date();
alert(box.getTime());                    //获取日期的毫秒数,和valueOf()返回一致/1478163539545

setTime()以毫秒数设置日期,会改变整个日期/1478163539545

var box = new Date();
alert(box.setTime(1478163539545));                    //以毫秒数设置日期,会改变整个日期/1478163539545

getFullYear()获取四位年份/2016

var box = new Date();
alert(box.getFullYear());                    //获取四位年份/2016

setFullYear()设置四位年份,返回的是毫秒数

var box = new Date();
alert(box.setFullYear(2012));                //设置四位年份,返回的是毫秒数/1351935497504

getMonth()获取月份,没指定月份,从0开始算起/11

var box = new Date();
alert(box.getMonth()+1);                    //获取月份,没指定月份,从0开始算起/11

setMonth()设置月份/返回毫秒1480758520312

var box = new Date();
alert(box.setMonth(11));                    //设置月份/返回毫秒1480758520312

getDate()获取日期3

var box = new Date();
alert(box.getDate());                    //获取日期3

setDate()设置日期,返回毫秒数/1478598717254

var box = new Date();
alert(box.setDate(8));                    //设置日期,返回毫秒数/1478598717254

getDay()返回星期几,0表示星期日,6表示星期六

var box = new Date();
alert(box.getDay());                    //返回星期几,0表示星期日,6表示星期六

setDay()设置星期几返回毫秒数

var box = new Date();
alert(box.setDay());                    //设置星期几

getHours()返回时18

var box = new Date();
alert(box.getHours());                    //返回时18

setHours()设置时返回毫秒1478145765552

var box = new Date();
alert(box.setHours(12));                    //设置时返回毫秒1478145765552

getMinutes()返回分钟/4

var box = new Date();
alert(box.getMinutes());                    //返回分钟/4

setMinutes()设置分钟返回毫秒/1478168523941

var box = new Date();
alert(box.setMinutes(22));                //设置分钟返回毫秒/1478168523941

getSeconds()返回秒数

var box = new Date();
alert(box.getSeconds());                    //返回秒数

setSeconds()设置秒数返回毫秒

var box = new Date();
alert(box.setSeconds(44));                //设置秒数返回毫秒

getMilliseconds()返回毫秒数

var box = new Date();
alert(box.getMilliseconds());                //返回毫秒数607

setMilliseconds()设置毫秒数

var box = new Date();
alert(box.setMilliseconds(123));                //设置毫秒数

getTimezoneOffset()返回本地时间和UTC时间相差的分钟数/-480

var box = new Date();
alert(box.getTimezoneOffset());            //返回本地时间和UTC时间相差的分钟数/-480

PS:以上方法除了getTimezoneOffset(),其他都具有UTC功能,例如setDate()及getDate()获取星期几,那么就会有setUTCDate()及getUTCDate()。表示世界协调时间。 

也就是除了getTimezoneOffset()外,其他方法都有UTC功能,UTC表示世界协调时间,与我们的时间相差8个小时 ,要使用UTC功能在方法里加上UTC即可  如:

var box = new Date();
alert(box.getUTCHours());                    //获取UTC时间

用组件方式组合完整的时间【常用】

var box = new Date();
alert(box.getFullYear()+'-'+(box.getMonth()+1)+'-'+box.getDate()+' '+box.getHours()+':'+box.getMinutes()+':'+box.getSeconds());
//返回2016-11-3 18:40:22

转载于:https://www.cnblogs.com/adc8868/p/6026565.html

第一百零四节,JavaScript时间与日期相关推荐

  1. 第一百零二节,JavaScript函数

    JavaScript函数 学习要点: 1.函数声明 2.return返回值 3.arguments对象 函数是定义一次但却可以调用或执行任意多次的一段JS代码.函数有时会有参数,即函数被调用时指定了值 ...

  2. “约见”面试官系列之常见面试题之第一百零四篇之vue优点(建议收藏)

    vue的优点: 1.轻量级框架 只关注视图层,是一个构建数据的视图集合,大小只有几十kb Vue.js通过简洁的API提供高效的数据绑定和灵活的组件系统 2.简单易学 国人开发,中文文档,不存在语言障 ...

  3. 第一百九十四节,jQuery EasyUI,Droppable(放置)组件

    jQuery EasyUI,Droppable(放置)组件 学习要点: 1.加载方式 2.属性列表 3.事件列表 4.方法列表 本节课重点了解 EasyUI 中 Droppable(放置)组件的使用方 ...

  4. 第一百零四期:搞清这些陷阱,NULL和三值逻辑再也不作妖

    NULL 用于表示缺失的值或遗漏的未知数据,不是某种具体类型的值.数据表中的 NULL 值表示该值所处的字段为空,值为 NULL 的字段没有值,尤其要明白的是:NULL 值与 0 或者空字符串是不同的 ...

  5. 第一百零四天 how can I 坚持

    写的代码还是会有很多bug啊,考虑不全. 太晚了睡觉了,貌似今天没什么可记录的, 晚上回家,13号线芍药居等了两趟地铁都是只到立水桥,好无语,到家都快11点半了. 李有才.感觉配不上你,但还是不想放弃 ...

  6. Baeldung Java 周评 | 第一百零五弹(关键词:如果 Java 是今天设计的、内容丰富的 Spring 会议、JPA 测试用例模版、高性能 Java 持久化、自动化订购午餐、前端五强)

    开篇词 尤金的第 105 篇 Java 周评,诞生了! Spring 以及 Java 相关 如果 Java 是今天设计的:可同步接口 [jooq.org] 关于 Java 中 "可能是什么& ...

  7. 美学心得(第一百九十四集)罗国正

    美学心得(第一百九十四集) 罗国正 (2018年11月) 2823.个人或群体,常在生理上和心理上积蓄着强大的势能,引爆这些势能很多时是由对号入座的一个"微细的感觉"导致的.这种& ...

  8. 第三百零九节,Django框架,models.py模块,数据库操作——F和Q()运算符:|或者、并且——queryset对象序列化...

    第三百零九节,Django框架,models.py模块,数据库操作--F()和Q()运算符:|或者.&并且 F()可以将数据库里的数字类型的数据,转换为可以数字类型 首先要导入 from dj ...

  9. 达芬奇密码 第一百零二章 第一百零三章

    达芬奇密码 第一百零二章 第一百零三章[@more@] 第一百零二章 塞拉斯一瘸一拐地走进一个看不见的寂静空间里.这时薄雾已经在肯辛顿花园中弥漫开来.他跪在湿漉漉的草地上,感到有股热血正从他肋骨以下的 ...

最新文章

  1. linux下top命令讲解
  2. Algorithms_二叉树二分搜索树初探
  3. 漫画说算法--动态规划算法三(绝对通俗易懂,非常棒)
  4. 揭露男生的真实心理年龄测试软件,心理年龄测试
  5. 三个等价c语言表达式,C语言习题综合(20页)-原创力文档
  6. java连接redis集群
  7. Android TextView 实现文字大小不同和文字颜色不同
  8. 大专学历造假改成了 211 拿到了抖音 Offer
  9. windows 通过 bat 脚本后台启动 jar 包,通过 jps 找到 pid,然后停止指定 jar 包,附 linux shell 脚本启停脚本
  10. 深度探索C++对象模型-Data语义学
  11. 解决MAC上网速度慢的原因
  12. 全流程+讲解+避坑指南 第一次使用vulhub搭建漏洞环境
  13. 清华镜像下载pytorch 2022-06-23
  14. 关键词查找并标注出来
  15. delphi 实现虚拟打印, 远程集中打印
  16. 由Nginx源码写双向循环链表
  17. 关于Google上架短信与通话记录权限的一深坑
  18. linux mv移动文件到指定目录,Linux mv命令使用示例-移动或重命令文件/目录
  19. Hexo博客提交百度和Google收录
  20. 弘辽科技:拼多多最容易拿到免费流量的两大核心。

热门文章

  1. linux 增加回环设备,linux命令练习:mount fdisk swap dd创建本地回环设备
  2. 华为畅享8可以云闪付吗_华为Mate40Pro不如小米11的8个理由,这些差距无法忽视,懂了吗...
  3. dev-sidecar安装桌面版
  4. MobaXterm 12中文版
  5. 【源码解析】ArrayList源码解析
  6. 关于readdir返回值中struct dirent.d_type的取值有关问题(转)
  7. WP8.1程序开发,可视树VisualTreeHelper类的使用
  8. J2EE项目工具集(转)
  9. ytu 1057: 输入两个整数,求他们相除的余数(带参的宏 + 模板函数 练习)
  10. 提高jQuery执行效率