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 相关文章推荐
一个简单的JS时间控件示例代码(JS时分秒时间控件)
Nov 22 Javascript
javascript实现简单的Map示例介绍
Dec 23 Javascript
JavaScript基础语法之js表达式
Jun 07 Javascript
VUEJS实战之利用laypage插件实现分页(3)
Jun 13 Javascript
Vue非父子组件通信详解
Jun 12 Javascript
微信小程序仿美团城市选择
Jun 06 Javascript
实例详解ztree在vue项目中使用并且带有搜索功能
Aug 24 Javascript
jQuery实现数字自动增加或者减少的动画效果示例
Dec 11 jQuery
layer弹出层倒计时关闭的实现方法
Sep 27 Javascript
vue项目使用高德地图的定位及关键字搜索功能的实例代码(踩坑经验)
Mar 07 Javascript
vue 清空input标签 中file的值操作
Jul 21 Javascript
JS实现简单的九宫格抽奖
Jun 28 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
YII2框架中excel表格导出的方法详解
2017/07/21 PHP
Laravel开启跨域请求的方法
2019/10/13 PHP
Laravel5.5 数据库迁移:创建表与修改表示例
2019/10/23 PHP
JS 判断undefined的实现代码
2009/11/26 Javascript
让新消息在网页标题闪烁提示的jQuery代码
2013/11/04 Javascript
jQuery(js)获取文字宽度(显示长度)示例代码
2013/12/31 Javascript
使用js Math.random()函数生成n到m间的随机数字
2014/10/09 Javascript
Node.js实现的简易网页抓取功能示例
2014/12/05 Javascript
javascript中传统事件与现代事件
2015/06/23 Javascript
微信小程序 textarea 详解及简单使用方法
2016/12/05 Javascript
JS复制对应id的内容到粘贴板(Ctrl+C效果)
2017/01/23 Javascript
vue中appear的用法
2017/08/17 Javascript
详解Angular4 路由设置相关
2017/08/26 Javascript
详解vue.js下引入百度地图jsApi的两种方法
2018/07/27 Javascript
vue中的计算属性实例详解
2018/09/19 Javascript
js实现盒子滚动动画效果
2020/08/09 Javascript
Linux环境下MySQL-python安装过程分享
2015/02/02 Python
Python数据结构与算法之链表定义与用法实例详解【单链表、循环链表】
2017/09/28 Python
十分钟利用Python制作属于你自己的个性logo
2018/05/07 Python
解决pandas 作图无法显示中文的问题
2018/05/24 Python
python抓取需要扫微信登陆页面
2019/04/29 Python
python实现趣味图片字符化
2019/04/30 Python
利用python list完成最简单的DB连接池方法
2019/08/09 Python
python中with语句结合上下文管理器操作详解
2019/12/19 Python
Oakley官网:运动太阳镜、雪镜和服装
2016/09/30 全球购物
iostream与iostream.h的区别
2015/01/16 面试题
致跳远、跳高运动员广播稿
2014/01/09 职场文书
中学自我评价
2014/01/31 职场文书
护士节策划方案
2014/05/19 职场文书
大学生毕业求职信
2014/06/12 职场文书
图书馆标语
2014/06/19 职场文书
试用期自我评价怎么写
2015/03/10 职场文书
2016年社区“6.26”禁毒日宣传活动总结
2016/04/05 职场文书
详解Spring Security中的HttpBasic登录验证模式
2022/03/17 Java/Android
Anaconda安装pytorch和paddle的方法步骤
2022/04/03 Python
如何更改Win11声音输出设备?Win11声音输出设备四种更改方法
2022/04/08 数码科技