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 相关文章推荐
用cookies实现的可记忆的样式切换效果代码下载
Dec 24 Javascript
node.js中的buffer.toJSON方法使用说明
Dec 14 Javascript
jQuery中的编程范式详解
Dec 15 Javascript
jQuery中val()方法用法实例
Dec 25 Javascript
javascript创建动态表单的方法
Jul 25 Javascript
一个php+js实时显示时间问题
Oct 12 Javascript
关注jquery技巧提高jquery技能(前端开发必学)
Nov 02 Javascript
JS简单编号生成器实现方法(附demo源码下载)
Apr 05 Javascript
jQuery实现checkbox列表的全选、反选功能
Nov 24 Javascript
angularjs的select使用及默认选中设置
Apr 08 Javascript
webpack4.0+vue2.0利用批处理生成前端单页或多页应用的方法
Jun 28 Javascript
vue+webpack dev本地调试全局样式引用失效的解决方案
Nov 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+DBM的同学录程序(2)
2006/10/09 PHP
深入探讨:PHP使用数据库永久连接方式操作MySQL的是与非
2013/06/05 PHP
php设计模式之命令模式使用示例
2014/03/02 PHP
typecho插件编写教程(五):核心代码
2015/05/28 PHP
win7安装php框架Yii的方法
2016/01/25 PHP
PHP实现适用于自定义的验证码类
2016/06/15 PHP
PHP简单实现模拟登陆功能示例
2017/09/15 PHP
JS提交并解析后台返回的XML的代码
2008/11/03 Javascript
Javascript表达式中连续的 &amp;&amp; 和 || 之赋值区别
2010/10/17 Javascript
window.print打印指定div指定网页指定区域的方法
2014/08/04 Javascript
jQuery层级选择器用法分析
2015/02/10 Javascript
jQuery增加自定义函数的方法
2015/07/18 Javascript
js仿微信语音播放实现思路
2016/12/12 Javascript
常用JS图片滚动(无缝、平滑、上下左右滚动)代码大全(推荐)
2016/12/20 Javascript
js实现时间轴自动排列效果
2017/03/09 Javascript
基于JSONP原理解析(推荐)
2017/12/04 Javascript
如何在js代码中消灭for循环实例详解
2018/07/29 Javascript
vue组件通信传值操作示例
2019/01/08 Javascript
详解使用React.memo()来优化函数组件的性能
2019/03/19 Javascript
快速解决element的autofocus失效问题
2020/09/08 Javascript
python中enumerate的用法实例解析
2014/08/18 Python
Python比较文件夹比另一同名文件夹多出的文件并复制出来的方法
2015/03/05 Python
python使用urllib2实现发送带cookie的请求
2015/04/28 Python
Django中处理出错页面的方法
2015/07/15 Python
Android模拟器无法启动,报错:Cannot set up guest memory ‘android_arm’ Invalid argument的解决方法
2016/07/01 Python
用Python实现命令行闹钟脚本实例
2016/09/05 Python
Python实现的人工神经网络算法示例【基于反向传播算法】
2017/11/11 Python
Django中数据库的数据关系:一对一,一对多,多对多
2018/10/21 Python
LACOSTE波兰官网:Polo衫、服装和鞋类
2020/09/29 全球购物
请用用Java代码写一个堆栈
2012/01/26 面试题
高中毕业的自我鉴定
2013/12/09 职场文书
生日宴会主持词
2014/03/20 职场文书
项目合作协议书
2014/09/23 职场文书
2015年女生节活动总结
2015/02/27 职场文书
教师个人师德工作总结2015
2015/05/12 职场文书
进行数据处理的6个 Python 代码块分享
2022/04/06 Python