当前位置主页 > 资料库 > 前端教程 > JavaScript核心对象-Date对象

JavaScript核心对象-Date对象

2015-11-05

JavaScript提供了Date对象来操作日期和时间。Date对象的值用一个整数来表示,它是自1970年1月1日0时到所代表的时间的毫秒数(1秒=1000毫秒)。正值表示该日期之后的时间,负值表示该日期之前的时间。这种表示方式与Unix系统中日期时间的表示方式是完全相同的。

由于客户端的JavaScript程序是在浏览器中运行的,Date对象返回客户端计算机的时间,而不是服务器上的时间。Date对象有6种创建方式,它们的语法为:

var now = new Date();//创建一个新的Date对象,其值为创建对象时计算机的日期时间
var myDate = new Date("month dd, yyyy,hh,mm,ss");
var myDate = new Date("month dd, yyyy");
var myDate = new Date(yyyy, mm, dd, hh, mm, ss);
var myDate = new Date(yyyy, mm, dd);
var myDate = new Date(milliseconds);                              
                            

第一种格式中没有任何参数,它创建一个新的Date对象,其值为创建对象时计算机上的日期时间。

第二种语法格式创建一个新的Date对象,并按照“月日年时分秒”的格式为Date对象指定初始日期值。

第三种语法格式创建一个新的Date对象,并按照“月日年”的格式为Date对象指定初始日期值。

第四种语法格式创建一个新的Date对象,并按照“年月日时分秒”的格式为Date对象指定初始日期值。

第五种语法格式创建一个新的Date对象,并按照“年月日”的格式为Date对象指定初始日期值。

第六种语法格式创建一个新的Date对象,并用从1970年1月1日0时到指定时间之间的毫秒总数为Date对象指定初始日期值。

Date对象只有一个属性prototype,这是一个静态属性,用于为当前文档中的Date对象添加新的属性和方法。

Date对象的方法

Date()方法有两种格式:一种使用本地的日期时间进行运算;另一种格式的方法名称中包含“UTC”字符串,它使用通用时间(格林威治时间GTM或通用协调时间UTC)进行运算。下面表格中为了查阅方便,采用简略的形式书写方法的名称,例如,名称gey[UTC]Date()代表了两个方法:getDate()getUTCDate(),它们具有的功能相同,只不过前一个方法使用的是本地时间进行操作,后一个方法使用通用时间进行操作。

方法 描述
get[UTC]Date() 返回日期是月份中的第几天。有效值在1-31之间
get[UTC]Day() 返回日期是星期几。0表示星期天,...,6表示星期六
get[UTC]FullYear() 返回日期中4个数字表示的年份,例如2015
get[UTC]Hours() 返回日期中小时字段的值,有效值在0-23之间
get[UTC]Milliseconds() 返回日期中毫秒字段的值
get[UTC]Minutes() 返回日期中分钟字段的值,有效值在0-59之间
get[UTC]Month() 返回日期中月份字段的值,有效值在0-11之间
get[UTC]Seconds() 返回日期中秒字段的值,有效值在0-59之间
getTime() 返回日期的内部毫秒数表示值,即从1970年1月1日午夜到Date对象表示的日期之间的毫秒数,该数值与时区无关
getTimezoneOffset() 返回Date对象所表示日期的本地时间于UTC时间之间的差值,以分钟为单位
getYear() (已废弃)返回两个数字表示的年份,该方法已经被getFullYear()所取代
set[UTC]Date(day_of_month) 设置日期中日字段的值,返回值用调整后日期的毫秒数表示(自1970年1月1日午夜到Date对象所表示日期之间的毫秒数)
set[UTC]FullYear(year,month,day) 使用年、月、日字段设置日期,月、日字段可选。返回值用调整后日期的毫秒数表示
set[UTC]Hours(hours,mins,secs,ms) 使用时、分、秒和毫秒设置日期时间,分、秒和毫秒字段可选。返回值用调整后日期的毫秒数表示
set[UTC]Milliseconds(millis) 设置日期中毫秒字段的值,参数millis的值必须在0-999之间。返回值用调整后日期的毫秒数表示
set[UTC]Minutes(minutes,seconds,millis) 使用分、秒和毫秒设置日期时间,秒和毫秒字段可选。返回值用调整后日期的毫秒数表示
set[UTC]Month(month,day) 使用月和日字段设置日期,日字段可选。返回值用调整后日期的毫秒数表示
set[UTC]Seconds(seconds,millis) 使用秒和毫秒设置日期时间,毫秒字段可选。返回值用调整后日期的毫秒数表示
setTime(millis) 使用日期的内部毫秒数设置日期值。返回值用调整后日期的毫秒数表示(即与参数millis的值相同)
setYear(year) (已废弃)使用两位数字的年份设置日期中的年份
toDateString() 返回Date对象代表的日期时间中日期的字符串表示,采用本地时区表示日期
toGMTString() (已废弃)返回采用GMT时区、以字符串表示的日期时间
toLocaleDateString() 返回Date对象代表的日期时间中日期的字符串表示,采用本地时区表示日期,并使用本地日期格式进行格式转换
toLocaleString() 将日期时间转换为字符串并返回,使用本地时区和本地日期格式进行格式转换
toLocaleTimeString() 返回Date对象代表的日期时间中时间的字符串表示,采用本地时区表示,并使用本地时间格式进行格式转换
toString 返回日期时间的字符串表示,使用本地时区
toTimeString() 返回Date对象代表的日期时间中时间的字符串表示,采用本地时区表示时间
toUTCString 返回日期时间的字符串表示,使用UTC时区
valueOf() 返回日期内部毫秒数表示的值,与getTime()方法的功能完全相同

除了上述与日期对象实例相关的方法之外,Date对象还提供了两个与Date对象实例无关的方法,它们必须使用Date()构造函数本身来调用,而不能通过Date对象实例来调用。它们是Date对象的静态方法。

方法 描述
Date.parse(date) 分析字符串形式表示的日期时间,并返回该日期时间对应的内部毫秒数表示值
Date.UTC(year,month,day,hour,min,sec,ms) 将UTC时区的“年月日时分秒”值转换为对应的日期时间内部毫秒数,并返回该内部毫秒数表示值

应用举例

下面来列举一些例子:点击下面的按钮来获取当前时间的不同表示。

日期时间返回结果

日期时间运算

这个小例子计算两个日期之间的天数,有时候我们需要知道距离某个特定的日期还有多少天,多少小时,多少分钟,这都需要对日期进行计算。下面的例子在输入框中输入一个日期,然后就可以计算出当前日期距离这个日期还有多少天。

请输入一个日期(格式为:xxxx-xx-xx):

计算返回结果

相关代码为:

var dateStr = $("#input-date").val();
var dateArr = dateStr.split("-");
var future = new Date(parseInt(dateArr[0]),parseInt(dateArr[1])-1,parseInt(dateArr[2]));
var now = new Date();
//计算两个日期之间的毫秒数的差值
var diff = Math.abs(future.getTime() - now.getTime());
//将毫秒数转换为天数
var days = Math.ceil(diff/(1000*60*60*24));
$("#date-results-2").text(dateStr + "与今天相距 " +days+ " 天");                              
                            

在上面的代码中,使用了字符串的分割函数split(),这将在后面介绍。在使用年月日来构建日期对象时,需要注意的是月份是从0开始计数的,所以要将实际的月份减去1。最后使用了Marh对象abs()方法来获取两个日期之间的毫秒数的差值,再使用ceil方法来截取天数。

扩展Date()对象的功能

例用Date对象的prototype属性,我们可以为Date对象创建新的属性和方法。下面我们将利用这个特性,通过创建新的方法,让日期对象能够返回中文表示的星期名称。

请输入一个日期(格式为:xxxx-xx-xx):

返回结果

上面例子的实现代码为:首先编写一个函数,使用数组来保存对应的中文星期名称,并可通过下标来将之返回。

function weekDay(){
  var now = this.getDay();
  var names = new Array(7);
  names[0] = "星期天";
  names[1] = "星期一";
  names[2] = "星期二";
  names[3] = "星期三";
  names[4] = "星期四";
  names[5] = "星期五";
  names[6] = "星期六";
  return names[now];
}                              
                            

然后通过Date对象的prototype实现来扩展Date对象的方法。

Date.prototype.DayOfWeek = weekDay;                              
                            

接着我们就可以像使用其它Date对象的方法一样使用DayOfWeek方法了。

var now = = new Date();
$("#date-results-3").text("输入的日期为: " +now.toLocaleDateString()+ " "+now.DayOfWeek());
                            
Previous:
上一篇:JavaScript核心对象-Math对象
Next:
下一篇:JavaScript核心对象-Number对象
返回顶部