JavaScript原生对象之Date对象的属性和方法详解


Posted in Javascript onMarch 13, 2015

创建 Date 对象的语法:

//Date 对象会自动把当前日期和时间保存为其初始值。

new Date();
//value-毫秒:代表自世界协调时1970年1月1日00:00:00开始的数值。

new Date(value);
//dateString-日期字符串:表示日期的字符串值。此字符串应该是在parse方法中识别的格式。

new Date(dateString);
//year-年:代表年份的整数值。为了避免2000年问题最好指定4位数的年份; 使用1998, 而不要用98

//month-月:代表月份的整数值从0(1月)到11(12月)

//day-日:代表一个月中的第几天的整数值,从1开始

//hour-小时:代表一天中的小时数的整数值 (24小时制)

//minute-分钟

//second-秒

//millisecond-毫秒

new Date(year, month, day [, hour, minute, second, millisecond]);

Date()

Date() 方法可返回当天的日期和时间。

console.log(Date());  //"Tue Sep 17 2013 12:22:55 GMT+0800 (中国标准时间)"

parse()

parse() 方法可解析一个日期时间字符串,并返回 1970/1/1 午夜距离该日期时间的毫秒数。

Date.parse(datestring)

参数datestring是必需的,表示日期和时间的字符串。

注意,该方法是 Date 对象的静态方法。一般采用 Date.parse() 的形式来调用,而不是通过 dateobject.parse() 调用该方法。

console.log(Date.parse(Date()));        //1379392301000

console.log(Date.parse("Aug 9, 1995")); //807897600000

UTC()

UTC() 方法可根据世界时返回 1970 年 1 月 1 日 到指定日期的毫秒数。

Date.UTC(year, month, day, hours, minutes, seconds, ms)

参数year是必需的,表示年份的四位数字;month是必需的,表示月份的整数,介于 0 ~ 11;day是可选的,表示日期的整数,介于 1 ~ 31;hours是可选的,表示小时的整数,介于 0 ~ 23;minutes是可选的,表示分钟的整数,介于 0 ~ 59;seconds是可选的,表示秒的整数,介于 0 ~ 59;ms是可选的,表示毫秒的整数,介于 0 ~ 999。

Date.UTC() 是一种静态方法。Date.UTC() 方法的参数指定日期和时间,它们都是 UTC 时间,处于 GMT 时区。指定的 UTC 时间将转换成毫秒的形式,这样构造函数 Date() 和方法 Date.setTime() 就可以使用它了。

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

注意:parse()日期和时间都基于本地时区而非GMT来创建。而UTC()是基于GMT来创建。他们的参数也不相同。

GMT:世界时,即格林尼治所在地的标准时间。

var d = new Date();
console.log(Date.parse(d));  //1379393562000

console.log(Date.UTC(d.getFullYear(), d.getMonth(), d.getDate(), d.getHours(), d.getMinutes(), d.getSeconds(), d.getMilliseconds()));  //1379422362020

ECMAScript5添加了Data.now()方法,返回表示调用这个方法时的日期和时间的毫秒数。IE9才开始支持,不过我们可以通过 + 操作符来把Data对象转换成字符串,得到同样的值。

var d1 = Date.now();

var d2 = + new Date();
console.log(d1);  //1379393793104

console.log(d2);  //1379393793104

JavaScript中的日期转换非常的诡异,不仅会因为参数不同而有不同的解释结果,而且在各个浏览器中的表现也有所不同,如下:

var d1 = new Date("2012/03/13");

var d2 = new Date("2012-03-13");

var d3 = new Date("2012-3-13");
console.log(d1);  //Tue Mar 13 2012 00:00:00 GMT+0800 (中国标准时间)

console.log(d2);  //Tue Mar 13 2012 08:00:00 GMT+0800 (中国标准时间)

console.log(d3);  //Tue Mar 13 2012 00:00:00 GMT+0800 (中国标准时间)

在不同浏览器中的表现参考:http://dygraphs.com/date-formats.html

为了避免这些问题,请遵照下面的建议:

1.坚持使用 ”YYYY/MM/DD” 的日期字符串格式
2.避免使用带有连字号的日期字符串格式”YYYY-MM-DD”
3.要指定四位数的年份
4.Chrome浏览器的比其他浏览器能接受更多的日期字符串,所以如果在Chrome浏览器没有问题,不代表其他浏览器没有问题

更多信息可以参考:JavaScript and Dates, What a Mess!和 SO中的讨论

get系列方法

getDate() 从 Date 对象返回一个月中的某一天 (1 ~ 31)。
getDay() 从 Date 对象返回一周中的某一天 (0 ~ 6)。
getMonth() 从 Date 对象返回月份 (0 ~ 11)。
getFullYear() 从 Date 对象以四位数字返回年份。注意不要使用getYear()。
getHours() 返回 Date 对象的小时 (0 ~ 23)。
getMinutes() 返回 Date 对象的分钟 (0 ~ 59)。
getSeconds() 返回 Date 对象的秒数 (0 ~ 59)。
getMilliseconds() 返回 Date 对象的毫秒(0 ~ 999)。
getTime() 返回 1970 年 1 月 1 日至今的毫秒数。
getTimezoneOffset() 返回本地时间与格林威治标准时间 (GMT) 的分钟差。
getUTCDate() 根据世界时从 Date 对象返回月中的一天 (1 ~ 31)。
getUTCDay() 根据世界时从 Date 对象返回周中的一天 (0 ~ 6)。
getUTCMonth() 根据世界时从 Date 对象返回月份 (0 ~ 11)。
getUTCFullYear() 根据世界时从 Date 对象返回四位数的年份。
getUTCHours() 根据世界时返回 Date 对象的小时 (0 ~ 23)。
getUTCMinutes() 根据世界时返回 Date 对象的分钟 (0 ~ 59)。
getUTCSeconds() 根据世界时返回 Date 对象的秒钟 (0 ~ 59)。
getUTCMilliseconds() 根据世界时返回 Date 对象的毫秒(0 ~ 999)。

set系列方法

setDate() 设置 Date 对象中月的某一天 (1 ~ 31)。
setMonth() 设置 Date 对象中月份 (0 ~ 11)。
setFullYear() 设置 Date 对象中的年份(四位数字)。注意不要使用setYear()方法。
setHours() 设置 Date 对象中的小时 (0 ~ 23)。
setMinutes() 设置 Date 对象中的分钟 (0 ~ 59)。
setSeconds() 设置 Date 对象中的秒钟 (0 ~ 59)。
setMilliseconds() 设置 Date 对象中的毫秒 (0 ~ 999)。
setTime() 以毫秒设置 Date 对象。
setUTCDate() 根据世界时设置 Date 对象中月份的一天 (1 ~ 31)。
setUTCMonth() 根据世界时设置 Date 对象中的月份 (0 ~ 11)。
setUTCFullYear() 根据世界时设置 Date 对象中的年份(四位数字)。
setUTCHours() 根据世界时设置 Date 对象中的小时 (0 ~ 23)。
setUTCMinutes() 根据世界时设置 Date 对象中的分钟 (0 ~ 59)。
setUTCSeconds() 根据世界时设置 Date 对象中的秒钟 (0 ~ 59)。
setUTCMilliseconds() 根据世界时设置 Date 对象中的毫秒 (0 ~ 999)。

toString系列方法

toString() 把 Date 对象转换为字符串,toString()总是返回一个用美式英语表达的字符串。
toTimeString() 把 Date 对象的时间部分转换为字符串。
toDateString() 把 Date 对象的日期部分转换为字符串。
toUTCString() 根据世界时,把 Date 对象转换为字符串。
toLocaleString() 根据本地时间格式,把 Date 对象转换为字符串。
toLocaleTimeString() 根据本地时间格式,把 Date 对象的时间部分转换为字符串。
toLocaleDateString() 根据本地时间格式,把 Date 对象的日期部分转换为字符串。

var d = new Date();
console.log(d);                      //Tue Sep 17 2013 13:37:04 GMT+0800 (中国标准时间)

console.log(d.toString());           //Tue Sep 17 2013 13:37:04 GMT+0800 (中国标准时间)

console.log(d.toTimeString());       //13:37:04 GMT+0800 (中国标准时间)

console.log(d.toDateString() );      //Tue Sep 17 2013

console.log(d.toUTCString());        //Tue, 17 Sep 2013 05:37:04 GMT

console.log(d.toLocaleString());     //2013年9月17日 下午1:37:04

console.log(d.toLocaleTimeString()); //下午1:37:04

console.log(d.toLocaleDateString()); //2013年9月17日

注意toLocaleString()系列方法可以接收参数,来确定按照什么习惯来输出,参考:MDN

var d = new Date();
console.log(d.toLocaleString("ko-KR"));  //2013년 9월 17일 오후 1:48:24
Javascript 相关文章推荐
jQuery中ajax的get()方法用法实例
Dec 26 Javascript
调试JavaScript中正则表达式中遇到的问题
Jan 27 Javascript
ionic隐藏tabs的方法
Aug 29 Javascript
微信小程序 Flex布局详解
Oct 09 Javascript
web前端开发upload上传头像js示例代码
Oct 22 Javascript
jQuery拖拽通过八个点改变div大小
Nov 29 Javascript
Javascript ES6中对象类型Sets的介绍与使用详解
Jul 17 Javascript
JS轮播图实现简单代码
Feb 19 Javascript
jQuery实现获取form表单内容及绑定数据到form表单操作分析
Jul 03 jQuery
vue 中Virtual Dom被创建的方法
Apr 15 Javascript
深入解读Node.js中的koa源码
Jun 17 Javascript
layui实现数据表格隐藏列的示例
Oct 25 Javascript
innerHTML属性,outerHTML属性,textContent属性,innerText属性区别详解
Mar 13 #Javascript
JavaScript内存管理介绍
Mar 13 #Javascript
JavaScript中的this关键字使用方法总结
Mar 13 #Javascript
javascript中slice(),splice(),split(),substring(),substr()使用方法
Mar 13 #Javascript
在linux中使用包管理器安装node.js
Mar 13 #Javascript
JQuery中serialize() 序列化
Mar 13 #Javascript
JavaScript中通过prototype属性共享属性和方法的技巧实例
Mar 13 #Javascript
You might like
PHP中=赋值操作符对不同数据类型的不同行为
2011/01/02 PHP
PHP如何抛出异常处理错误
2011/03/02 PHP
php中的常用魔术方法总结
2013/08/02 PHP
如何通过Linux命令行使用和运行PHP脚本
2015/07/29 PHP
PHP屏蔽关键字实现方法
2016/11/17 PHP
PHP性能分析工具xhprof的安装使用与注意事项
2017/12/19 PHP
PHP基于面向对象封装的分页类示例
2019/03/15 PHP
javascript:void(0)的问题使用探讨
2014/04/10 Javascript
PHP+jQuery+Ajax实现多图片上传效果
2015/03/14 Javascript
JavaScript学习小结(一)——JavaScript入门基础
2015/09/02 Javascript
node学习记录之搭建web服务器教程
2017/02/16 Javascript
JavaScript中object和Object的区别(详解)
2017/02/27 Javascript
JavaScript实现的斑马线表格效果【隔行变色】
2017/09/18 Javascript
QQ跳转支付宝并自动领红包脚本(最新)
2018/06/22 Javascript
vue-cli 使用vue-bus来全局控制的实例讲解
2018/09/15 Javascript
jquery实现点击弹出对话框
2020/02/08 jQuery
[57:38]2018DOTA2亚洲邀请赛3月30日 小组赛A组 OpTic VS OG
2018/03/31 DOTA
pandas创建新Dataframe并添加多行的实例
2018/04/08 Python
python 实现创建文件夹和创建日志文件的方法
2019/07/07 Python
python属于跨平台语言码
2020/06/09 Python
使用keras实现Precise, Recall, F1-socre方式
2020/06/15 Python
Python3爬虫关于代理池的维护详解
2020/07/30 Python
Python filter()及reduce()函数使用方法解析
2020/09/05 Python
django项目中使用云片网发送短信验证码的实现
2021/01/19 Python
香港草莓网:Strawberrynet香港
2019/05/10 全球购物
学生安全责任书
2014/04/15 职场文书
2014年入党积极分子党校培训心得体会
2014/07/08 职场文书
火锅店的活动方案
2014/08/15 职场文书
学生偷窃检讨书
2014/09/25 职场文书
国际贸易实务实训报告
2014/11/05 职场文书
幼儿园学前班幼儿评语
2014/12/29 职场文书
辞职信格式范文
2015/05/13 职场文书
工伤劳动仲裁代理词
2015/05/25 职场文书
家长会后的感想
2015/08/11 职场文书
《风筝》教学反思
2016/02/23 职场文书
导游词之广州陈家祠
2019/10/21 职场文书