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 相关文章推荐
jQuery插件pagewalkthrough实现引导页效果
Jul 05 Javascript
jquery实现清新实用的网页菜单效果
Aug 28 Javascript
jQuery多级手风琴菜单实例讲解
Oct 22 Javascript
jQuery实现获取绑定自定义事件元素的方法
Dec 02 Javascript
jQuery中bind(),live(),delegate(),on()绑定事件方法实例详解
Jan 19 Javascript
js随机生成26个大小写字母
Feb 12 Javascript
laypage分页控件使用实例详解
May 19 Javascript
基于JS+Canves实现点击按钮水波纹效果
Sep 15 Javascript
Layui组件Table绑定行点击事件和获取行数据的方法
Aug 19 Javascript
vue项目中将element-ui table表格写成组件的实现代码
Jun 12 Javascript
JS前端基于canvas给图片添加水印
Nov 11 Javascript
JavaScript实现移动小精灵的案例代码
Dec 12 Javascript
批量下载对路网图片并生成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
php二分查找二种实现示例
2014/03/12 PHP
制作安全性高的PHP网站的几个实用要点
2014/12/30 PHP
php导入模块文件分享
2015/03/17 PHP
CI框架入门之MVC简单示例
2016/11/21 PHP
PHP实现的链式队列结构示例
2017/09/15 PHP
浅谈laravel-admin form中的数据,在提交后,保存前,获取并进行编辑
2019/10/21 PHP
JavaScript 对象的属性和方法4种不同的类型
2010/03/19 Javascript
Jquery中request和request.form和request.querystring的区别
2015/11/26 Javascript
基于jQuery仿淘宝产品图片放大镜特效
2020/10/19 Javascript
基于JS实现EOS隐藏错误提示层代码
2016/04/25 Javascript
JavaScript实现时钟滴答声效果
2017/01/29 Javascript
原生js实现简单的Ripple按钮实例代码
2017/03/24 Javascript
详解vue渲染从后台获取的json数据
2017/07/06 Javascript
关于JavaScript语句后面的分号问题
2017/12/07 Javascript
Vue设置长时间未操作登录自动到期返回登录页
2020/01/22 Javascript
JS实现烟花爆炸效果
2020/03/10 Javascript
[09:23]国际邀请赛采访专栏:iG战队VK,Tongfu战队Cu
2013/08/05 DOTA
python中MySQLdb模块用法实例
2014/11/10 Python
对Python3 pyc 文件的使用详解
2019/02/16 Python
详解Django项目中模板标签及模板的继承与引用(网站中快速布置广告)
2019/03/27 Python
python中使用ctypes调用so传参设置遇到的问题及解决方法
2019/06/19 Python
在python plt图表中文字大小调节的方法
2019/07/08 Python
python设计微型小说网站(基于Django+Bootstrap框架)
2019/07/08 Python
Python urllib.request对象案例解析
2020/05/11 Python
python 将Excel转Word的示例
2021/03/02 Python
使用Python webdriver图书馆抢座自动预约的正确方法
2021/03/04 Python
人事档案接收函
2014/01/12 职场文书
美术教师自我鉴定
2014/02/12 职场文书
经典而简洁的婚礼主持词
2014/03/13 职场文书
小学生读书活动总结
2014/06/30 职场文书
关于旅游的活动方案
2014/08/15 职场文书
2015年节能降耗工作总结
2015/05/22 职场文书
你会写报告?产品体验报告到底该怎么写?
2019/08/14 职场文书
扩展多台相同的Web服务器
2021/04/01 Servers
用Python爬取某乎手机APP数据
2021/06/15 Python
vue中控制mock在开发环境使用,在生产环境禁用方式
2022/04/06 Vue.js