JavaScript引用类型之Date类型

创建日期对象的方法

要创建一个日期函数,使用new操作符和Date构造函数,例如:
var now = new Date();

在调用Date()构造函数而不传递参数的情况下,新创建的对象自动获得当前日期和时间。

如果想根据特定的日期和时间创建日期对象,必须传入该日期的毫秒数,即即从 UTC时间 1970年 1月 1日午 夜起至该日期止经过的毫秒数。为了简化这一计算过程,ECMAScript 提供了两个方法:Date.parse() 和 Date.UTC()。

Date.parse()方法
Date.parse()方法接收一个表示日期的字符串参数,然后根据这个字符串返回相应日期的毫秒数。

将地区设置为美国的浏览器通常都接受下列日期格式:

  • “月/日/年”,如 6/13/2004; 
  • “英文月名 日,年”,如 January 12,2004; 
  • “英文星期几 英文月名 日 年 时:分:秒 时区”,如 Tue May 25 2004 00:00:00 GMT-0700。 
  • ISO 8601 扩展格式YYYY-MM-DDTHH:mm:ss.sssZ(例如 2004-05-25T00:00:00)。只有兼容 ECMAScript 5的实现支持这种格式。

Date.parse()方法的字符串不能表示日期,那么它会返回 NaN。

实际上,如果直接将表 示日期的字符串传递给 Date 构造函数,也会在后台调用 Date.parse()。
因此:

var someDate = new Date("May 25, 2004"); 

等价于

var someDate = new Date(Date.parse("May 25, 2004")); 
console.log(someDate); //Tue May 25 2004 00:00:00 GMT+0800 (中国标准时间)

Date.UTC()方法

Date.UTC()方法同样也返回表示日期的毫秒数,但它与 Date.parse()在构建值时使用不同的信息。Date.UTC()的参数分别是年份、基于0的月份(一月是 0,二月是 1,以此类推)、月中的哪一天 (1 到 31)、小时数(0 到 23)、分钟、秒以及毫秒数。在这些参数中,只有前两个参数(年和月)是必需的。如果没有提供月中的天数,则假设天数为 1;如果省略其他参数,则统统假设为 0。以下是两个使用 Date.UTC()方法的例子:

// GMT 时间 2000 年 1 月 1 日午夜零时 
var y2k = new Date(Date.UTC(2000, 0)); 
console.log(y2k);//Sat Jan 01 2000 08:00:00 GMT+0800 (中国标准时间)
 
// GMT 时间 2005 年 5 月 5 日下午 5:55:55 
var allFives = new Date(Date.UTC(2005, 4, 5, 17, 55, 55)); 
console.log(allFives); // Fri May 06 2005 01:55:55 GMT+0800 (中国标准时间)

:返回的时间有误差的原因是new Date() 方法返回的是本机时间,也就是东八区的时间,Date.UTC()返回的是0时区的时间,返回的是0时区的时间与1970.1.1相差的毫秒数,两者相差8个小时。

如同模仿 Date.parse()一样,Date 构造函数也会模仿 Date.UTC(),但有一点明显不同:日期 和时间都基于本地时区而非 GMT来创建。不过,Date 构造函数接收的参数仍然与 Date.UTC()相同。因此,如果第一个参数是数值,Date 构造函数就会假设该值是日期中的年份,而第二个参数是月份, 以此类推。
例如:

// 本地时间 2000 年 1 月 1 日午夜零时 
var y2k = new Date(2000, 0); 
 
// 本地时间 2005 年 5 月 5 日下午 5:55:55 
var allFives = new Date(2005, 4, 5, 17, 55, 55); 

Date.now()方法
Date.now()方法返回调用这个方法的日期和时间的毫秒数。
例如:

var now=Date.now();
console.log(now);   // 1600424632596

+操作符
,使用+操作符把 Data 对象转换成字符串,也可以达到返回调用这个方法的日期和时间的毫秒数的目的。
例如:

var now= + new Date();
console.log(now); //1600424747827

继承的方法

toLocalString()方法
toLocalString()方法会按照与浏览器设置的地区相适应的格式返回日期和时间。
toString()方法
*toString()方法通常返回带有时区信息的日期和时间,其中时间一般以军用时间表示
valueOf()方法
valueOf()方法返回日期的毫秒表示。因此可以方便使用比较操值作符来比较日期。

例如:

var now= new Date();
console.log(now); //Fri Sep 18 2020 18:33:48 GMT+0800 (中国标准时间)
console.log(now.toLocaleString()); //2020/9/18 下午6:33:48
console.log(now.toString());  //Fri Sep 18 2020 18:33:48 GMT+0800 (中国标准时间)
console.log(now.valueOf()); //1600425228750

日期格式化方法

  • toDateString()——以特定于实现的格式显示星期几、月、日和年; 
  • toTimeString()——以特定于实现的格式显示时、分、秒和时区; 
  • toLocaleDateString()——以特定于地区的格式显示星期几、月、日和年; 
  • toLocaleTimeString()——以特定于实现的格式显示时、分、秒; 
  • toUTCString()——以特定于实现的格式完整的 UTC日期。
    与 toLocaleString()和 toString()方法一样,以上这些字符串格式方法的输出也是因浏览器 而异的,因此没有哪一个方法能够用来在用户界面中显示一致的日期信息。

日期组件方法

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值