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 相关文章推荐
js动态创建、删除表格示例代码
Aug 07 Javascript
Tab切换组件(选项卡功能)实例代码
Nov 21 Javascript
js控制浏览器全屏示例代码
Feb 20 Javascript
js使用for循环与innerHTML获取选中tr下td值
Sep 26 Javascript
JS+CSS实现模仿浏览器网页字符查找功能的方法
Feb 26 Javascript
jQuery实现的鼠标滑过弹出放大图片特效
Jan 08 Javascript
jQuery on()绑定动态元素出现的问题小结
Feb 19 Javascript
JavaScript字符串对象(string)基本用法示例
Jan 18 Javascript
jQuery Datatable 多个查询条件自定义提交事件(推荐)
Aug 24 jQuery
element-ui 设置菜单栏展开的方法
Aug 22 Javascript
使用Node搭建reactSSR服务端渲染架构
Aug 30 Javascript
Vue-drag-resize 拖拽缩放插件的使用(简单示例)
Dec 04 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删除HTMl标签的三种解决方法
2013/06/30 PHP
laravel config文件配置全局变量的例子
2019/10/13 PHP
JavaScript学习笔记(一) js基本语法
2011/10/25 Javascript
关于js日期转化为毫秒数“节省20%的效率和和节省9个字符“问题
2012/03/01 Javascript
怎么清空javascript数组
2013/05/11 Javascript
javascript:void(0)是什么意思示例介绍
2013/11/17 Javascript
详解微信小程序 wx.uploadFile 的编码坑
2017/01/23 Javascript
vue使用watch 观察路由变化,重新获取内容
2017/03/08 Javascript
jQuery实现回到顶部效果
2020/10/19 jQuery
python利用elaphe制作二维条形码实现代码
2012/05/25 Python
使用Python获取Linux系统的各种信息
2014/07/10 Python
用map函数来完成Python并行任务的简单示例
2015/04/02 Python
初步解析Python中的yield函数的用法
2015/04/03 Python
python实现按行切分文本文件的方法
2016/04/18 Python
Python+Pandas 获取数据库并加入DataFrame的实例
2018/07/25 Python
Python实现注册、登录小程序功能
2018/09/21 Python
Python rstrip()方法实例详解
2018/11/11 Python
快速排序的四种python实现(推荐)
2019/04/03 Python
python读取指定字节长度的文本方法
2019/08/27 Python
Python3视频转字符动画的实例代码
2019/08/29 Python
Python目录和文件处理总结详解
2019/09/02 Python
pandas 中对特征进行硬编码和onehot编码的实现
2019/12/20 Python
pytorch下大型数据集(大型图片)的导入方式
2020/01/08 Python
Python基于class()实现面向对象原理详解
2020/03/26 Python
Python如何在main中调用函数内的函数方式
2020/06/01 Python
使用python把xmind转换成excel测试用例的实现代码
2020/10/12 Python
美国电视购物HSN官网:HSN
2016/09/07 全球购物
IGK Hair官网:喷雾、洗发水、护发素等
2020/11/03 全球购物
物业管理专业个人的自我评价
2013/11/19 职场文书
初中军训感想300字
2014/03/05 职场文书
设计专业自荐信
2014/06/19 职场文书
英文演讲稿开场白
2014/08/25 职场文书
企业年检委托书范本
2014/10/14 职场文书
投标邀请书范本
2015/02/02 职场文书
Java Socket实现Redis客户端的详细说明
2021/05/26 Redis
centos环境下nginx高可用集群的搭建指南
2022/07/23 Servers