Javascript之Date对象详解


Posted in Javascript onJune 07, 2016

Date对象即日期时间对象,它的主要功能是实现对日期时间的处理

1、创建Date对象

var myDate = new Date();


var myDate = new Date("July 21, 1983 01:15:00");//此种方法为自定义日期时间的方式,格式若不对的话为提示Invalid Date

Date对象的constructor属性为:Date

document.write(myDate.constructor == Date);//输出true

2、Date()方法,返回今天的日期和时间,格式是固定格式:

document.write(Date());//Date()属于Javascript的内置对象,可以直接使用

输出:
Fri Oct 26 2012 10:15:22 GMT+0800
格式: 星期 月份 日期 年份 时间 时区

另:假如自定义一个Date()对象,返回结果是一样的

var myDate = new Date();

document.write(myDate);

Fri Oct 26 2012 10:17:09 GMT+0800

注:两者区别的地方在于:
前者只能显示当前的时间,而不能随意定义时间
例,document.write(Date("July 21, 1983 01:15:00"));
它显示的时间仍然是当前的时间:Fri Oct 26 2012 10:15:22 GMT+0800

3、getDate()方法返回月份的某一天

月份中的某一天指的是使用本地时间,其返回值是 1 ~ 31 之间的一个整数。

var myDate = new Date();

document.write(myDate.getDate());

输出:26
var myDate = new Date("July 21, 1983 01:15:00");

document.write(myDate.getDate());

输出:21

4、getDay() 方法可返回表示星期的某一天的数字,它的取值范围:0--6

var myDate = new Date("July 21, 1983 01:15:00");

document.write(mtDate.getDay());

输出4

为此我们可以采用Date对象和Array对象结合的方式将时间人性化显示出来,下面这种方法非常常用

var weekday = new Array(7);

weekday[0]="Sunday";

weekday[1]="Monday";

weekday[2]="Tuesday";

weekday[3]="Wednesday";

weekday[4]="Thursday";

weekday[5]="Friday";

weekday[6]="Saturday";

var myDate = new Date();

document.write(weekday[myDate.getDay()]);

5、getMonth(),返回月份字段,返回值是 0(一月) 到 11(十二月) 之间的一个整数

和getDay()类似,我们也采用与Array对象相结合的方式

var d=new Date();

var month=new Array(12);

month[0]="January";

month[1]="February";

month[2]="March";

month[3]="April";

month[4]="May";

month[5]="June";

month[6]="July";

month[7]="August";

month[8]="September";

month[9]="October";

month[10]="November";

month[11]="December";

document.write("The month is " + month[d.getMonth()]);

6、getFullYear() 方法可返回一个表示年份的 4 位数字。

返回值是一个四位数,表示包括世纪值在内的完整年份,而不是两位数的缩写形式。

var d = new Date();

document.write(d.getFullYear());

输出:
2012
var born = new Date("July 21, 1983 01:15:00");

document.write("I was born in " + born.getFullYear());

输出:
1983

通过上述方法三种方法结合我们就可以得出比较人性化的时间显示,例:

var weekday = new Array(7);

weekday[0]="Sunday"

weekday[1]="Monday"

weekday[2]="Tuesday"

weekday[3]="Wednesday"

weekday[4]="Thursday"

weekday[5]="Friday"

weekday[6]="Saturday"

var month=new Array(12);

month[0]="January";

month[1]="February";

month[2]="March";

month[3]="April";

month[4]="May";

month[5]="June";

month[6]="July";

month[7]="August";

month[8]="September";

month[9]="October";

month[10]="November";

month[11]="December";

var myDate = new Date();

document.write("Date is "+myDate.getFullYear()+" "+month[myDate.getMonth()]+" "+myDate.getDate()+" "+weekday[myDate.getDay()]);

输出为:
Date is 2012 October 19 Friday

7、getHours() 方法可返回时间的小时字段,返回值是 0 (午夜) 到 23 (晚上 11 点)之间的一个整数。

var born = new Date("July 21, 1983 01:15:00");

document.write(born.getHours());

输出:1
注释:由 getHours() 返回的值是一个两位的数字。
不过返回值不总是两位的,如果该值小于 10,则仅返回一位数字。

8、getMinutes() 方法可返回时间的分钟字段,返回值是 0 ~ 59 之间的一个整数。

与上述方法类似,返回值不总是两位的,如果该值小于 10,则仅返回一位数字。

9、getSeconds() 方法可返回时间的秒,返回值是 0 ~ 59 之间的一个整数。

与上述方法类似,返回值不总是两位的,如果该值小于 10,则仅返回一位数字。

10、getMilliseconds() 方法可返回时间的毫秒,毫秒字段,以本地时间显示。返回值是 0 ~ 999 之间的一个整数。

注释:由 getMilliseconds() 返回的值是一个三位的数字。

不过返回值不总是三位的,如果该值小于 100,则仅返回两位数字,如果该值小于 10,则仅返回一位数字。
下面我们有两种方式将时间显示出来:
--->方式一

var d = new Date();

document.write('Time is '+d.getHours()+":"+d.getMinutes()+":"+d.getSeconds());

输出:Time is 10:52:2,缺点很明显,在秒为<10的情况下只显示了一位,其他的也类似,因此推荐第二种显示方式

--->方式二

function checktime(time)

{

    if(time<10)

    {

      time = '0'+time;

    }

    return time;

}

var d = new Date();

document.write('Time is '+checktime(d.getHours())+":"+checktime(d.getMinutes())+":"+checktime(d.getSeconds()));

输出:Time is 10:55:02

11、getTime() 方法可返回本地时间距 1970 年 1 月 1 日之间的毫秒数,因此可以自定义Date("Jul 26 2000");

var d = new Date();

document.write(d.getTime() + " milliseconds since 1970/01/01");

输出:1350615452813 milliseconds since 1970/01/01

因此我们可以根据此数得到本地时间距离1970/01/01的年数

var minutes = 1000*60;//一分钟有60秒,一秒有60毫秒,下面依次类推

var hours = minutes*60;

var days = hours*24;

var years = days*365;

var d = new Date();

var t = d.getTime();//获得距离1970/01/01的毫秒数

var y = t/years;

document.write("It's been: " + y + " years since 1970/01/01!");

输出:
It's been: 42.82773990521943 years since 1970/01/01!
注:此时的年份是一个小数,可以将其换成整数(其实Javascript中没有整数的区别)

最后一行修改为:

document.write("It's been: " + parseInt(y) + " years since 1970/01/01!");

输出:
It's been: 42 years since 1970/01/01!
parseInt(float);可以将浮点类型转换为整型

12、getTimezoneOffset() 方法可返回格林威治时间和本地时间之间的时差,以分钟为单位。

注:
getTimezoneOffset() 方法返回的是本地时间与 GMT 时间或 UTC 时间之间相差的分钟数。
实际上,该函数告诉我们运行 JavaScript 代码的时区,以及指定的时间是否是夏令时。
返回之所以以分钟计,而不是以小时计,原因是某些国家所占有的时区甚至不到一个小时的间隔。

var d = new Date();

document.write(d.getTimezoneOffset());

输出:
-480(东八区,8*60)

因此可以根据此方法来判断所在时区

function checkzone(zone)

{

    if (zone==0)

    {

        return "零时区";

    }

    else if (zone>0)

    {

    return "西"+parseInt(zone/60)+"区";

    }

    else

    {

    return "东"+parseInt(Math.abs(zone/60))+"区";

    }

}

var d = new Date();

document.write(checkzone(d.getTimezoneOffset()));

其中Math.abs()为求绝对值
以上方法是自己原创,因为地理学的不好,不知道对不对,求指正

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

parse(str);str为字符串,是一个符合时间格式的字符串

var minutes = 1000 * 60;

var hours = minutes * 60;

var days = hours * 24;

var years = days * 365;

var t = Date.parse("Jul 8, 2005");

var y = t/years;

document.write("It's been: " + parseInt(y) + " years from 1970/01/01");

document.write(" to 2005/07/08!");

输出为:
It's been: 35 years from 1970/01/01 to 2005/07/08!

14、setDate() 方法用于设置一个月的某一天。

setDate(day),day必需。表示一个月中的一天的一个数值(1 ~ 31)。
注,此方法是在原先对象的基础上进行修改,会改变原先数据的值
例:

var d = new Date();

document.write(d.getDate()+"<br>");

d.setDate(31);

document.write(d.getDate());

输出:
19
31

15、setMonth() 方法用于设置月份,与setDate()使用方法一直,也会改变原Date对象

setMonth(month,day),目前可能不支持第二个参数,month必需。一个表示月份的数值,该值介于 0(一月) ~ 11(十二月) 之间。
假如支持day参数的话,day代表的是月中某一天的数值,介于 1 ~ 31 之间。用本地时间表示。

var d = new Date();

document.write(d.getMonth()+" "+d.getDate()+"<br>");

d.setMonth(11,26);

document.write(d.getMonth()+" "+d.getDate());

输出为:
9 19
11 26

16、setFullYear() 方法用于设置年份。

setFullYear(year,month,day);
year 必需。表示年份的四位整数。用本地时间表示。
month 可选。表示月份的数值,介于 0 ~ 11 之间。用本地时间表示。
day 可选。表示月中某一天的数值,介于 1 ~ 31 之间。用本地时间表示。

var d = new Date();

d.setFullYear(1992,10,3);

document.write(d);

输出为:
Tue Nov 03 1992 11:31:58 GMT+0800

17、setHours() 方法用于设置指定的时间的小时字段。

setHours(hour,min,sec,millisec);
hour 必需。表示小时的数值,介于 0(午夜) ~ 23(晚上11点) 之间,以本地时间计(下同)。
min 可选。表示分钟的数值,介于 0 ~ 59 之间。在 EMCAScript 标准化之前,不支持该参数。
sec 可选。表示秒的数值,介于 0 ~ 59 之间。在 EMCAScript 标准化之前,不支持该参数。
millisec 可选。表示毫秒的数值,介于 0 ~ 999之间。在 EMCAScript 标准化之前,不支持该参数。

var d = new Date()

d.setHours(15,35,1)

document.write(d)

输出为:
Fri Oct 19 15:35:01 UTC+0800 2012

18、setMinutes() 方法用于设置指定时间的分钟字段。

setMinutes(min,sec,millisec)
min 必需。表示分钟的数值,介于 0 ~ 59 之间,以本地时间计(下同)。
sec 可选。表示秒的数值,介于 0 ~ 59 之间。在 EMCAScript 标准化之前,不支持该参数。
millisec 可选。表示毫秒的数值,介于 0 ~ 999 之间。在 EMCAScript 标准化之前,不支持该参数。

var d = new Date()

d.setMinutes(1)

document.write(d)

输出为:
Fri Oct 19 11:01:11 UTC+0800 2012

19、setSeconds() 方法用于设置指定时间的秒字段。

setSeconds(sec,millisec)
sec 必需。表示秒的数值,该值是介于 0 ~ 59 之间的整数。
millisec 可选。表示毫秒的数值,介于 0 ~ 999 之间。在 EMCAScript 标准化之前,不支持该参数。

20、setMilliseconds() 方法用于设置指定时间的毫秒字段。

setMilliseconds(millisec)
millisec 必需。用于设置 dateObject 毫秒字段,该参数是介于 0 ~ 999 之间的整数。

21、setTime() 方法以毫秒设置 Date 对象。

此方法是比较常用的方法,在数据库中存放Date.getTime()毫秒数,
在返回时如何显示出来呢,就是用此方法
setTime(millisec)
millisec 必需。要设置的日期和时间据 GMT 时间 1997 年 1 月 1 日午夜之间的毫秒数。
这种类型的毫秒值可以传递给 Date() 构造函数,可以通过调用 Date.UTC() 和 Date.parse() 方法获得该值。以毫秒形式表示日期可以使它独立于时区。

var d = new Date();

d.setTime(77771564221);

document.write(d);

输出为:
Mon Jun 19 1972 11:12:44 GMT+0800
此种方法就可以根据数据库中存放的long数据类型将其转换为了时间对象

22、toTimeString() 方法可把 Date 对象的时间部分转换为字符串,并返回结果。

var d = new Date();

document.write(d.toTimeString());

输出:
11:50:57 GMT+0800

23、toDateString() 方法可把 Date 对象的日期部分转换为字符串,并返回结果。

var d = new Date();

document.write(d.toDateString());

输出:
Fri Oct 19 2012

24、还有很多设计UTC时区的一些方法,此处没有列出,仅仅是对一般的通用较多的方法汇总了下

查看更多JavaScript的语法,大家可以关注:《JavaScript 参考教程》、《JavaScript代码风格指南》,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
用javascript实现读取txt文档的脚本
Jul 20 Javascript
详谈 Jquery Ajax异步处理Json数据.
Sep 09 Javascript
关于js中alert弹出窗口文本换行问题简单详细说明
Dec 11 Javascript
jQuery学习笔记之基础中的基础
Jan 19 Javascript
js给selected添加options的方法
May 06 Javascript
js仿小米手机上下滑动效果
Feb 05 Javascript
ES6新特性之字符串的扩展实例分析
Apr 01 Javascript
React根据宽度自适应高度的示例代码
Oct 11 Javascript
vue-cli配置文件——config篇
Jan 04 Javascript
vue cli构建的项目中请求代理与项目打包问题
Feb 26 Javascript
JavaScript实现无限级递归树的示例代码
Mar 29 Javascript
vue 使用rules对表单字段进行校验的步骤
Dec 25 Vue.js
批量下载对路网图片并生成html的实现方法
Jun 07 #Javascript
javascript之Boolean类型对象
Jun 07 #Javascript
jQuery简单实现仿京东分类导航层效果
Jun 07 #Javascript
javascript之Array 数组对象详解
Jun 07 #Javascript
JavaScript语言精粹经典实例(整理篇)
Jun 07 #Javascript
jQuery+ajax实现滚动到页面底部自动加载图文列表效果(类似图片懒加载)
Jun 07 #Javascript
javascript基础知识
Jun 07 #Javascript
You might like
如何批量替换相对地址为绝对地址(利用bat批处理实现)
2013/05/27 PHP
基于PHP-FPM进程池探秘
2017/10/17 PHP
通过js脚本复制网页上的一个表格的不错实现方法
2006/12/29 Javascript
JS Array对象入门分析
2008/10/30 Javascript
用js写了一个类似php的print_r输出换行功能
2013/02/18 Javascript
JS中判断null、undefined与NaN的方法
2014/03/26 Javascript
javascript为下拉列表动态添加数据项
2014/05/23 Javascript
Bootstrap每天必学之基础排版
2015/11/20 Javascript
jQuery实现按钮点击遮罩加载及处理完后恢复的效果
2016/06/07 Javascript
js生成随机数(指定范围)的实例代码
2016/07/10 Javascript
JavaScript职责链模式概述
2016/09/17 Javascript
微信小程序实现左右联动的实战记录
2018/07/05 Javascript
AngularJs返回前一页面时刷新一次前面页面的方法
2018/10/09 Javascript
在Vant的基础上实现添加表单验证框架的方法示例
2018/12/05 Javascript
bootstrap与pagehelper实现分页效果
2018/12/29 Javascript
微信小程序代码上传、审核发布小程序
2019/05/18 Javascript
python基础教程之对象和类的实际运用
2014/08/29 Python
在Linux系统上通过uWSGI配置Nginx+Python环境的教程
2015/12/25 Python
Python遍历目录并批量更换文件名和目录名的方法
2016/09/19 Python
Python 12306抢火车票脚本 Python京东抢手机脚本
2018/02/06 Python
python验证码识别教程之利用滴水算法分割图片
2018/06/05 Python
pycharm 配置远程解释器的方法
2018/10/28 Python
python aiohttp的使用详解
2019/06/20 Python
python 判断linux进程,并杀死进程的实现方法
2019/07/01 Python
python 获取剪切板内容的两种方法
2020/11/28 Python
世界各地的当地人的食物体验:Eatwith
2019/07/26 全球购物
普通PHP程序员笔试题
2016/01/01 面试题
如何提高JDBC的性能
2013/04/30 面试题
如何设置Java的运行环境
2013/04/05 面试题
英语硕士生求职简历的自我评价
2013/10/15 职场文书
人力资源主管的岗位职责
2014/03/15 职场文书
无保留意见审计报告
2015/06/05 职场文书
2016年秋季开学典礼新闻稿
2015/11/25 职场文书
python基于机器学习预测股票交易信号
2021/05/25 Python
Redis中key的过期删除策略和内存淘汰机制
2022/04/12 Redis
ubuntu下常用apt命令介绍
2022/06/05 Servers