18 js时间对象

时间对象是一种复杂数据类型,用来存储时间

创建时间对象

内置构造函数创建

语法:var 时间名=new Date()

javascript 复制代码
        var date=new Date()
        console.log(date)   //Wed May 29 2024 16:03:47 GMT+0800 (中国标准时间)

创建指定日期

当参数为数字------>在格林威治的时间基础上增加

多个数字一次表示年月日时分秒

当参数为字符串------>设置指定日期

javascript 复制代码
        //格林威治时间 Thu Jan 01 1970 08:00:00 GMT+0800 (中国标准时间)

        //1.一个参数  在格林威治时间的基础上加 1000=1s
        var date1=new Date(1000)
        console.log(date1)      //Thu Jan 01 1970 08:00:01 GMT+0800 (中国标准时间)

        //2.多个参数 依次表示年月日时分秒  在格林威治时间的基础上加
        var date2=new Date(1,2,3)
        console.log(date2)      //Sun Mar 03 1901 00:00:00 GMT+0800 (中国标准时间)

        //3.当参数为字符串,则是设置具体日期
        var date3=new Date('2001-12-12 10:10:10')
        console.log(date3)  //Wed Dec 12 2001 10:10:10 GMT+0800 (中国标准时间)
        var date4=new Date('2001/12/12 10:10:10')
        console.log(date4)  //Wed Dec 12 2001 10:10:10 GMT+0800 (中国标准时间)

        var date5=new Date('2001/12/12 10:10:10','2002/12/12 10:10:10')
        console.log(date5)  //Invalid Date  无效日期

事件对象方法

javascript 复制代码
        var date=new Date('2024/12/2 10:10:10')

        //获取年份
        console.log(date.getFullYear()) //2024

        //获取月份 月是从0开始到11结束  0-11------>1-12
        console.log(date.getMonth())    //返回数字11  

        // 获取日期
        console.log(date.getDate())     //2

        // 获取时间
        console.log(date.getHours())    //10

        // 获取分钟
        console.log(date.getMinutes())  //10

        // 获取秒
        console.log(date.getSeconds())  //10

        // 获取毫秒
        console.log(date.getMilliseconds()) //0

        // 获取星期几   返回数字0-6分别对应星期日-星期六
        console.log(date.getDay())          //1

        // 获取时间戳------现在距离格林威治时间的毫秒数
        console.log(date.getTime()) //1733105410000

练习题

练习题1:获取当前时间编写一个函数,返回当前的日期和时间字符串,格式为:YYYY-MM-DD-MM-DD HH:mm:ss。

javascript 复制代码
function getCurrentDateTime() {
    var now = new Date();
    var year = now.getFullYear();
    var month = ("0" + (now.getMonth() + 1)).slice(-2);//slice从倒数第2位开始截取
    var day = ("0" + now.getDate()).slice(-2);
    var hours = ("0" + now.getHours()).slice(-2);
    var minutes = ("0" + now.getMinutes()).slice(-2);
    var seconds = ("0" + now.getSeconds()).slice(-2);
    return year + "-" + month + "-" + day + " " + hours + ":" + minutes + ":" + seconds;
}

console.log(getCurrentDateTime());

练习题2:编写一个函数,输入任意年月日,输出该年份的日期是星期几(例如:0代表周日,1代表周一,以此类推)。

javascript 复制代码
      function fn(argDay) {
        var day = new Date(argDay);
        return day.getDay();
      }
      console.log(fn("2020/12/2"));        //3
      console.log(fn("2023/01/12"));       //4
      console.log(fn("2024/5/27"));        //1

练习题3:倒计时创建一个倒计时器函数,接受一个未来的时间(年-月-日 时:分:秒),并实时显示距离该时间还有多久(以小时、分钟、秒显示)。

javascript 复制代码
      function fn(d1) {
        var day1 = new Date();
        console.log(day1);
        var day2 = new Date(d1);
        //两者相差毫秒数
        var timer = Math.abs(day1.getTime() - day2.getTime()) / 1000;
        console.log(timer);
        //1小时=60分钟=3600秒  =3600 000毫秒
        var h = parseInt(timer / 3600);
        var m = parseInt((timer - h * 3600) / 60);
        var s = parseInt(timer - h * 3600 - m * 60);
        return h + ":" + m + ":" + s;
      }
      console.log(fn("2024/5/31 20:25:20"));

练习题4:日期比较编写一个函数,比较两个日期字符串(格式YYYY-MM-DD),返回哪一个日期更早。

javascript 复制代码
function compareDates(dateStr1, dateStr2) {
    var date1 = new Date(dateStr1);
    var date2 = new Date(dateStr2);
    return date1.getTime() < date2.getTime() ? dateStr1 : dateStr2;
}

console.log(compareDates("2023-01-01", "2023-12-31")); 

练习题5:月份天数编写一个函数,给定一个年份和月份,返回该月份的天数(考虑闰年)。

javascript 复制代码
      var date = new Date(2024, 2, 0);    //将日期设置为0即可
      console.log(date.getDate());    //29
相关推荐
喵叔哟16 小时前
9. 【Blazor全栈开发实战指南】--Blazor调用JavaScript
开发语言·javascript·udp
我命由我1234516 小时前
Element Plus - Form 的 resetField 方法观察记录
开发语言·前端·javascript·vue.js·html·html5·js
清空mega16 小时前
《Vue3 项目结构详解:components、views、assets、router、stores 到底该怎么理解?》
前端·javascript·vue.js
雨雨雨雨雨别下啦17 小时前
Vue——小白也能学!Day6
前端·javascript·vue.js
冰暮流星18 小时前
javascript如何实现删除数组里面的重复元素
开发语言·前端·javascript
网络点点滴19 小时前
透传属性$attrs
前端·javascript·vue.js
Moment20 小时前
尤雨溪宣布 Vite+ 正式开源,前端工具链要大一统了
前端·javascript·面试
喵叔哟20 小时前
5. 【Blazor全栈开发实战指南】--Blazor组件基础
开发语言·javascript·ecmascript
ujainu20 小时前
Electron 实战:将用户输入保存到本地文件 —— 基于 `fs.writeFileSync` 与 IPC 的安全写入方案
javascript·安全·electron
进击的尘埃21 小时前
基于 LangChain.js 的前端 Agent 工作流编排:Tool 注册、思维链可视化与多步推理的实时 DAG 渲染
javascript