第一百零四节,JavaScript时间与日期
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+0800
var 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
第一百零四节,JavaScript时间与日期的更多相关文章
- “全栈2019”Java第一百零四章:匿名内部类与外部成员互访详解
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- 第四百零四节,python网站第三方登录,social-auth-app-django模块,
第四百零四节,python网站第三方登录,social-auth-app-django模块, social-auth-app-django模块是专门用于Django的第三方登录OAuth2协议模块 目 ...
- 第一百零九节,JavaScript面向对象与原型
JavaScript面向对象与原型 学习要点: 1.学习条件 2.创建对象 3.原型 4.继承 ECMAScript有两种开发模式:1.函数式(过程化),2.面向对象(OOP).面向对象的语言有一个标 ...
- 第一百零七节,JavaScript基本包装类型,数据类型的方法
JavaScript基本包装类型,数据类型的方法 学习要点: 1.基本包装类型概述 2.Boolean类型 3.Number类型 4.String类型 为了便于操作基本类型值,ECMAScript提供 ...
- 第一百零五节,JavaScript正则表达式
JavaScript正则表达式 学习要点: 1.什么是正则表达式 2.创建正则表达式 3.获取控制 4.常用的正则 假设用户需要在HTML表单中填写姓名.地址.出生日期等.那么在将表单提交到服务器进一 ...
- 第一百零二节,JavaScript函数
JavaScript函数 学习要点: 1.函数声明 2.return返回值 3.arguments对象 函数是定义一次但却可以调用或执行任意多次的一段JS代码.函数有时会有参数,即函数被调用时指定了值 ...
- 第一百零一节,JavaScript流程控制语句
JavaScript流程控制语句 学习要点: 1.语句的定义 2.if 语句 3.switch语句 4.do...while语句 5.while语句 6.for语句 7.for...in语句 8.br ...
- 第一百零六节,JavaScript变量作用域及内存
JavaScript变量作用域及内存 学习要点: 1.变量及作用域 2.内存问题 JavaScript的变量与其他语言的变量有很大区别.JavaScript变量是松散型的(不强制类型)本质,决定了它只 ...
- 第一百零三节,JavaScript对象和数组
JavaScript对象和数组 学习要点: 1.Object类型 2.Array类型 3.对象中的方法 什么是对象,其实就是一种类型,即引用类型.而对象的值就是引用类型的实例.在ECMAScript中 ...
随机推荐
- RFC Transactional RFC (tRFC) queue RFC(qRFC) 概念
Transactional RFC When using transactional RFC (tRFC), the called function module is executed exactl ...
- java后台接受app上传的图片
package com.sujinabo.file; import java.io.File; import java.io.FileOutputStream; import java.io.IOEx ...
- redis面试总结
http://blog.csdn.net/guchuanyun111/article/category/6335900 (1)什么是redis? Redis 是一个基于内存的高性能key-value数 ...
- tnvm 安装模块不能找到关联模块问题
export NODE_PATH='/Users/yuqi/.tnvm/lib/node_modules' export PATH='/Users/yuqi/.tnvm/bin':$PATH sour ...
- c#委托概念
委托的官方概念是:安全封装方法的类型. 百度百科的概念是,委托是个类,定义了方法的类型,使得方法可以作为另外一个方法的参数进行传递.使得程序具有很好的扩展性. 揉碎了讲一下这个概念: 张三要做三件事: ...
- CoreJavaE10V1P3.9 第3章 Java的基本编程结构-3.9 大数值(Big Numbers)
如果基本的整型与浮点型不能满足需求,可以使用java.Math包提供的 BigInteger 和 BigDecimal 两个类,这两个类可以存储任意长度的数, BigInteger 实现的任意精度整数 ...
- js函数的可变参数
//对于js的可变参数的清空,在定义函数式不需要写上参数, 在函数内部使用argument对象可以 直接获取参数个数等信息 //在调用函数式可以传递任意个数的参数 function text(){ v ...
- bat脚本-set(setlocal enabledelayedexpansion) 学习
设置本地为延迟扩展.其实也就是:延迟变量,全称延迟环境变量扩展. 事件一: @echo off set a=4 set a=5&echo %a% pause 解说:为什么是4而不是5呢?在ec ...
- HDU 4403 A very hard Aoshu problem
暴力$dfs$. 先看数据范围,字符串最长只有$15$,也就是说枚举每个字符后面是否放置“$+$”号的复杂度为${2^{15}}$. 每次枚举到一种情况,看哪些位置能放“$=$”号,每个位置都试一下, ...
- [SOJ] 无路可逃?
Description 唐僧被妖怪关在迷宫中.孙悟空好不容易找到一张迷宫地图,并通过一个魔法门来到来到迷宫某个位置.假设迷宫是一个n*m的矩阵,它有两种地形,1表示平地,0表示沼泽,孙悟空只能停留在平 ...