JavaScript/JS关于时间函数的学习,并结合实际业务例子进入加强记忆,附快速获取当天、昨天等时间函数

JavaScript Date(日期) 对象

今天我们重点学习JavaScript中的Date对象。

Date对象用于处理日期和时间。可以通过new关键词来定义Date对象。

获取时间

  • 如获取当前系统时间。
var now = new Date();
console.log(now); //控制台的输出结果为Mon May 09 2022 13:48:39 GMT+0800 (中国标准时间)
  • 也可以获取指定参数的时间。
//参数1:年份
//参数2:月份 (注意从0开始)
//参数3:日
//参数4:小时
//参数5:分钟
//参数6:秒
var date1 = new Date(new Date(2022,0,1,09,30,00));
console.log(date1);//控制台的输出结果为Sat Jan 01 2022 09:30:00 GMT+0800 (中国标准时间)
//参数非必填,可按需省略,不填默认为0
var date2 = new Date(2022,0,9);
console.log(date2);//控制台的输出结果为Sun Jan 09 2022 00:00:00 GMT+0800 (中国标准时间)
  • 也可以将时间戳作为参数,转化成时间。
var date3 = new Date(1652076712317);
console.log(date3);//控制台的输出结果为Mon May 09 2022 14:11:52 GMT+0800 (中国标准时间)
  • 当我们获取到时间之后, 可以通过其子函数获取对应的年、月、日、时、分、秒、时间戳等。
var now = new Date();
var year = now.getFullYear();//2022
var month = now.getMonth();//4 注意 4代表5月份
var day = now.getDate();//9
var hour = now.getHours(); // 14, 24小时制
var minute = now.getMinutes(); // 24
var second = now.getSeconds(); // 22
var time = now.getTime();//1652077528307 时间戳
  • 有了这些子函数,我们就可以利用setDate等函数对时间进行动态设置,如标题中提到的获取昨天的时间。
var now = new Date();
var yestoday = now.setDate(now.getDate()-1);
console.log(yestoday)//控制台的输出结果为1651991719834
//对时间戳进行转化
yestoday = new Date(yestoday);
console.log(yestoday)//控制台的输出结果为Sun May 08 2022 14:37:39 GMT+0800 (中国标准时间)
//
//
//合并成代码
var now = new Date();
var yestoday = new Date(now.setDate(now.getDate()-1));
console.log(yestoday)//控制台的输出结果为Sun May 08 2022 14:41:00 GMT+0800 (中国标准时间)
//注意: 如果增加天数会改变月份或者年份,那么日期对象会自动完成这种转换。
  • 如今天为9号,需获取上个月9号的时间,则需使用setMonth,其他如setFullYear,setHours均同理。
var now = new Date();
var yesMonth = now.setMonth(now.getMonth()-1);
console.log(yesMonth)//控制台的输出结果为1649486669147
//对时间戳进行转化
yesMonth = new Date(yesMonth);
console.log(yesMonth)//控制台的输出结果为Sat Apr 09 2022 14:44:50 GMT+0800 (中国标准时间)
//
//
//合并成代码
var now = new Date();
var yesMonth = new Date(now.setMonth(now.getMonth()-1));
console.log(yesMonth);//控制台的输出结果为Sat Apr 09 2022 14:45:44 GMT+0800 (中国标准时间)
//注意: 如果增加月份会改变年份,那么日期对象会自动完成这种转换。

格式化时间

当我们能够正确拿到时间之后,需要对时间进行格式化,以便更好的在界面上展示,或者使用正确的格式与后台数据进行交互。

var now = new Date();
console.log(now);//控制台的输出结果为Mon May 09 2022 14:58:53 GMT+0800 (中国标准时间)
var formatNow = formatDate(now);
console.log(formatNow);//控制台的输出结果为2022-05-09 14:58:53


function formatDate(time) {
      if (time != null) {
        var datetime = new Date();
        datetime.setTime(time);
        var year = datetime.getFullYear();
        var month = (datetime.getMonth() + 1) < 10 ? "0" + (datetime.getMonth() + 1) : (datetime.getMonth() + 1);
        var date = datetime.getDate() < 10 ? "0" + datetime.getDate() : datetime.getDate();
        var hour = datetime.getHours() < 10 ? "0" + datetime.getHours() : datetime.getHours();
        var minute = datetime.getMinutes() < 10 ? "0" + datetime.getMinutes() : datetime.getMinutes();
        var second = datetime.getSeconds() < 10 ? "0" + datetime.getSeconds() : datetime.getSeconds();
       //获得正确的年月日时分秒之后,可根据界面要求进行自由组合
       //如需转化成yyyy-mm-dd HH:mm:ss
        return year + "-" + month + "-" + date + ' ' + hour + ':' + minute + ':' + second;
       //如需转化成yyyy/mm/dd
       // return year + "/" + month + "/" + date;
      } else {
        return "---";
      }
    }

结合上一节的内容,整理获取昨天、上个月格式化的时间。

var now = new Date();
var yestoday = formatDate(new Date(now.setDate(now.getDate()-1)));
console.log(yestoday)//控制台的输出结果为2022-05-08 15:02:41

var now = new Date();
var yesMonth = formatDate(new Date(now.setMonth(now.getMonth()-1)));
console.log(yesMonth);//控制台的输出结果为2022-04-09 15:03:30

function formatDate(time) {
      if (time != null) {
        var datetime = new Date();
        datetime.setTime(time);
        var year = datetime.getFullYear();
        var month = (datetime.getMonth() + 1) < 10 ? "0" + (datetime.getMonth() + 1) : (datetime.getMonth() + 1);
        var date = datetime.getDate() < 10 ? "0" + datetime.getDate() : datetime.getDate();
        var hour = datetime.getHours() < 10 ? "0" + datetime.getHours() : datetime.getHours();
        var minute = datetime.getMinutes() < 10 ? "0" + datetime.getMinutes() : datetime.getMinutes();
        var second = datetime.getSeconds() < 10 ? "0" + datetime.getSeconds() : datetime.getSeconds();
       //获得正确的年月日时分秒之后,可根据界面要求进行自由组合
       //如需转化成yyyy-mm-dd HH:mm:ss
        return year + "-" + month + "-" + date + ' ' + hour + ':' + minute + ':' + second;
       //如需转化成yyyy/mm/dd
       // return year + "/" + month + "/" + date;
      } else {
        return "---";
      }
    }

实际业务

由于列表数据量过大,默认进入页面时只展示一周以内的数据。需要在进入页面时获取当前系统时间前7天的时间作为开始时间传入后台。后台接收的格式为 yyyy-mm-dd。

var now = new Date();
var beforeDay = formatDate(new Date(now.setDate(now.getDate()-7)));
console.log(beforeDay)//控制台的输出结果为2022-05-02
function formatDate(time) {
      if (time != null) {
        var datetime = new Date();
        datetime.setTime(time);
        var year = datetime.getFullYear();
        var month = (datetime.getMonth() + 1) < 10 ? "0" + (datetime.getMonth() + 1) : (datetime.getMonth() + 1);
        var date = datetime.getDate() < 10 ? "0" + datetime.getDate() : datetime.getDate();
        var hour = datetime.getHours() < 10 ? "0" + datetime.getHours() : datetime.getHours();
        var minute = datetime.getMinutes() < 10 ? "0" + datetime.getMinutes() : datetime.getMinutes();
        var second = datetime.getSeconds() < 10 ? "0" + datetime.getSeconds() : datetime.getSeconds();
       //获得正确的年月日时分秒之后,可根据界面要求进行自由组合
       //如需转化成yyyy-mm-dd HH:mm:ss
        return year + "-" + month + "-" + date;
       //如需转化成yyyy/mm/dd
       // return year + "/" + month + "/" + date;
      } else {
        return "---";
      }
    }
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值