javascript 内置对象Date总结及案例

举报
馆主阿牛 发表于 2022/03/22 00:59:14 2022/03/22
【摘要】 今天总结javascript中Date的使用,并且写一个重要的网页倒计时的核心算法案例。

📋 个人简介

  • 💖 作者简介:大家好,我是阿牛。
  • 💬格言:迄今所有人生都大写着失败,但不妨碍我继续向前!🔥
    请添加图片描述

前言

今天总结javascript中Date的使用,并且写一个重要的网页倒计时的核心算法案例。

Date的基本使用

内置对象Date是构造函数,用new创建对象,无参数时返回当前时间,可加参数返回特定时间

//内置对象Date是构造函数,用new创建对象,无参数时返回当前时间,可加参数返回特定时间
var now_time = new Date();
console.log(now_time);
        
// 年月日之间可以用-或者/
var time_1 = new Date('2018-05-06 12:36:15');
var time_2 = new Date('2018/05/06');
console.log(time_1);
console.log(time_2);

在这里插入图片描述

格式化时间

可以从上图看到返回的时间格式 ==Sun May 06 2018 00:00:00 GMT+0800 (中国标准时间)== 不符合我们中国人的表示习惯
所以我们需要获取日期的指定部分,然后进行日期格式化。

方法名 说明 代码
getFullYear() 获取当年 Obj.getFullYear()
getMonth() 获取当月,返回0 -11 Obj.getMonth()
getDate() 获取当天日期 Obj.getDate()
getDay() 获取星期几(周日0 到 周六6) Obj.getDay()
getHours() 获取当前小时 Obj.getHours()
getMinutes() 获取当前分钟 Obj.getMinutes()
getSeconds() 获取当前秒钟 Obj.getSeconds()

1.格式化日期 - 年,月,日

//格式化日期- 年,月,日
var date = new Date(); // 实例化一个日期对象
var year = date.getFullYear();  // 返回当前日期年份
var month = date.getMonth() + 1;  //返回的是0-11,分别对应1-12月,所以接果+1才是正确的月数
year = year < 10? '0' + year: year ;
var dates = date.getDate();    // 返回几号
dates  = dates < 10? '0' + dates: dates ;
var day = date.getDay();   //返回的是0-6,分别对应星期天-星期六

var day_arr = ['星期天','星期一','星期二','星期三','星期四','星期五','星期六',]
console.log('今天是:'+ year + '年' + month +  '月' + dates + '日' + day_arr[day]);

在这里插入图片描述

2.格式化时,分,秒

	function getTime(){
            var time = new Date();
            var h = time.getHours();
            h = h < 10? '0' + h: h;
            var m = time.getMinutes();
            m = m < 10? '0' + m: m;
            var s = time.getSeconds();
            s = s < 10? '0' + s: s;

            return h + ':'  + m + ':' + s ;
        }

        console.log(getTime());

在这里插入图片描述

获取Date总的毫秒数(时间戳)

我们时常可以看到时间戳,那么他是怎么来的呢?

其实时间戳表示的是从1970年1月1号到当前时间的总的毫秒数。

至于为什么是1970年的这个时间,感兴趣的可以百度看看,十分有趣。

==在我们javascript中获取时间戳有三种方法。==

//获取Date总的毫秒数(时间戳) ,是从1970年1月1号到当前的总的毫秒数 至于为什么是这个时间,感兴趣的可以百度看看,十分有趣
//1.通过 valueOf() 或者 getTime() 方法
var date = new Date();
console.log(date.valueOf());  //得到的是我们当前时间距离1970 1.1的总的毫秒数
console.log(date.getTime());

//2.简单的写法(最常用的写法)
var date = +new Date(); 
console.log(date);

//3.H5 新增的,ie9以下不适用
console.log(Date.now());

在这里插入图片描述

案例-网页倒计时核心算法(重要)

1)核心算法:输入的时间减去现在的时问就是利余的时问,即倒计时,但是不能拿着时分秒相减,比如05分减去25分,结果会是负数的。
2)用时间载来做。用户输入时间总的老秒数减去现在时间的总的毫秒数,得到的就是剩余时间的毫秒数。
3)把剩余时间总的毫秒数化为秒然后转换为天、时、分、秒(时间转换为时分秒)

转换公式下:
d = parselnt (总秒数/60/60/24);        计算天数
h = parselnt (总秒数/60/60%24);        计算小时
m = parselnt (总秒数/60%60);        计算分数
s = parselnt (总秒数%60);        计算当前秒数

//网页倒计时核心算法
function countTime(time){
    var newTime = +new Date(); //获取当前总的毫秒数(时间戳)
    var inputTime = +new Date(time); // 得到指定时间的时间戳
    var times = (inputTime - newTime) / 1000; // 剩余时间的秒数
    
    var d = parseInt(times / 60 / 60 / 24); // 天数 ,取整
    d = d<10 ? '0'+d : d; // 补零
    var h = parseInt(times / 60 / 60 % 24);  // 时
    h = h<10 ? '0'+h : h;
    var m = parseInt(times / 60 % 60); //分
    m = m<10 ? '0'+m : m;
    var s = parseInt(times % 60);  //秒
    s = s<10 ? '0'+s : s;
    return d + '天' + h + '时' + m + '分' + s + '秒';
}

    console.log(countTime('2022-03-01 18:00:00'));

在这里插入图片描述

结语

你学废了吗?关注本专栏,持续更新中···

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

举报
请填写举报理由
0/200