前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >红宝书 📒 5.1 基本引用类型-Date

红宝书 📒 5.1 基本引用类型-Date

作者头像
用户4793865
发布2023-01-12 13:36:39
1.5K0
发布2023-01-12 13:36:39
举报
文章被收录于专栏:前端小菜鸡yym前端小菜鸡yym

引用类型是把数据和功能组织到一起的结构,从技术上讲JavaScript是一门面向对象语言,但是ECMAScript缺少传统的面向对象所具备的某些基本结构,入类和接口(但是ES6出现了类的概念,同时TypeScript也有了接口的概念)。

引用类型有时候也被称为对象定义,因为它们描述了自己的对象应有的属性和方法。

函数也是一种引用类型

Date

其参考了Java的java.util.Date,Js中的 Date 类型可以精确表示 1970 年 1 月 1 日之前及之后 285616 年的日期。

创建

不传参则是当前时间

代码语言:javascript
复制
    let now = new Date()

当然我们很多情况使用是需要传参的,这个参数需要转换为1970年1月1日后的毫秒数。因此Js提供了两个方法 Date.parse()Date.UTC()。我们下面要学习的大部分方法都是在原型链上的。

image.png
image.png

Date.parse()

首先看两行代码 代码输出是一样的。

代码语言:javascript
复制
    // "2019-04-22T16:00:00.000Z"
    let someTime = new Date("4/23/2019") 
    // "2019-04-22T16:00:00.000Z"
    let someTime = new Date(Date.parse("4/23/2019")) 

这是为什么?即使没调用parse,后台还是隐式调用Date.parse

支持转换的日期格式如下:

代码语言:javascript
复制
月/日/年      5/23/2019
月巴拉巴拉 日,年   May巴拉巴拉 23,2019
周几 月名 日 年 时:分:秒 时区 Tue May 23 2019 00:00:00 GMT-0700
YYYY-MM-DDTHH:mm:ss.sssZ               2019-05-23T00:00:00

如果传给Date.parse的字符串并不表示日期,则返回NaN

Date.UTC()

同样是返回日期的毫秒表示。

区别是,参数是年、月(0-11表示1-12月)、日(1-31)、时(0-23)、分、秒、毫秒。

Date.UTC将时间转换成秒数,再通过new Date()转换成日期对象

代码语言:javascript
复制
// 2000年1月1日零点
let y2k = new Date(Date.UTC(2000,0))
// 时间 2005 年 5 月 5 日下午 5 点 55 分 55 秒
let allFives = new Date(Date.UTC(2005, 4, 5, 17, 55, 55));

同样,当我们不调用 Date.UTC,JS后台处理的时候同样会隐式调用这个方法。

继承的方法

与其他类型一样,Date类型也重写了 toLocalString() toString() 和 valueOf() ,但是返回值不一样。

新创建一个Date对象

代码语言:javascript
复制
let date = new Date()  // Sat Nov 06 2021 17:56:57 GMT+0800 (中国标准时间)
// 时间格式变了
date.toLocaleString()  // 2021/11/6 下午5:56:57
// 只是将类型转为字符串 没什么用处
date.toString() // "Sat Nov 06 2021 17:56:57 GMT+0800 (中国标准时间)"
// 返回的是日期的毫秒表示
date.valueOf()  // 1636192617072

因为这个方法被重写后返回的是日期的毫秒表示,因此,操作符可以使用(> 、<)可以使用它返回的值。

代码语言:javascript
复制
let date1 = new Date(2019,0,1) // 2019年1月1日   
let date2 = new Date(2019,1,1) // 2019年2月1日
date1 < date2                  // true      实则是比较的valueOf()值
date1.valueOf()    //1546272000000
date2.valueOf()    //1548950400000

日期格式化方法

用于格式化日期的方法,返回值都是字符串。

代码语言:javascript
复制
let date = new Date()
date.toDateString()   // Sat Nov 06 2021
date.toTimeString() // 18:45:50 GMT+0800 (中国标准时间)
date.toLocaleDateString()  // 2021/11/6
date.toLocaleTimeString()  // 下午6:45:50
date.toUTCString()   // Sat, 06 Nov 2021 10:45:50 GMT

常用的方法

代码语言:javascript
复制
 let date = new Date()
 date.getTime()        // 1636204570244  返回日期的毫秒数与valueOf()相同
 // 年
 date.getFullYear()    // 2021      返回年
 
 date.setFullyear(2019)    // 将2021年改为 2019年
 console.log(date)        // Wed Nov 06 2019 21:16:10 GMT+0800 (中国标准时间)
 
 // 月
 date.getMonth()         // 因为是0-11  所以想要得到真实的需要月份需要 +1
 date.setMonth(8)        // 0-11 所以传8得到的是9月
 console.log(date)      // Fri Sep 06 2019 21:16:10 GMT+0800 (中国标准时间)
 
 // 日
 date.getDate()        // 得到 几日  注意不是getDay()
 date.setDate() 
 
 // 周几
 date.getDay()       // 返回日期中的周几(0周日 6周六)
 
 // 时
 date.getHours()     // 0~23
 date.setHours()     // 如果设置的值大于23,则加日
 
 // 分
 date.getMinutes()    // 0~59
 date.setMinutes(59)   // 如果大于59则加到时上
 
 // 秒
 date.getSeconds()     // 返回日期中的秒
 date.setSeconds(89)   // 同理
 
 // 毫秒  📢 1秒=1000毫秒
 date.getMilliseconds()    //  返回毫秒
 date.setMilliseconds()

moment

moment.js 满足了大部分工作中需要的对时间的处理,推荐使用。比原生的Date会更好处理。 ✈️

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-11-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Date
    • Date.parse()
      • Date.UTC()
        • 继承的方法
          • 日期格式化方法
            • 常用的方法
              • moment
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档