JS实现各种日期操作方法汇总

return MonthFirstDay;
}

##本月最后一天

/***

  • @return {*} MonthLastDay 返回本月最后一天的时间
    */
    function showMonthLastDay(){
    let Nowdate=new Date();
    let MonthNextFirstDay=new Date(Nowdate.getFullYear(),Nowdate.getMonth()+1);
    let MonthLastDay=new Date(MonthNextFirstDay-86400000);
    return MonthLastDay;
    }

##日期转时间戳

/**

  • @param {String} time - 日期字符串,如’2018-8-8’,‘2018,8,8’,‘2018/8/8’
  • @returns {Number} 返回值为时间毫秒值
    */
    function timeToTimestamp (time) {
    let date = new Date(time);
    let timestamp = date.getTime();
    return timestamp;
    }

##格式化当前时间

/***

  • @return {string} timeText 返回系统时间字符串
    */
    function getdataTimeSec() {
    let time = new Date();
    let weekDay;
    let year = time.getFullYear();
    let month = time.getMonth() + 1;
    let day = time.getDate();
    //获取时分秒
    let h = time.getHours();
    let m = time.getMinutes();
    let s = time.getSeconds();
    //检查是否小于10
    h = check(h);
    m = check(m);
    s = check(s);
    let now_day = time.getDay();
    switch (now_day) {
    case 0: {
    weekDay = “星期日”
    }
    break;
    case 1: {
    weekDay = “星期一”
    }
    break;
    case 2: {
    weekDay = “星期二”
    }
    break;
    case 3: {
    weekDay = “星期三”
    }
    break;
    case 4: {
    weekDay = “星期四”
    }
    break;
    case 5: {
    weekDay = “星期五”
    }
    break;
    case 6: {
    weekDay = “星期六”
    }
    break;
    case 7: {
    weekDay = “星期日”
    }
    break;
    }
    let timeText = year + “年” + month + “月” + day + “日 " + " " + weekDay + " " + h + “:” + m +”:" + s;

return timeText
}

##返回指定时间戳之间的时间间隔

/**

  • @param {*} startTime 开始时间的时间戳
  • @param {*} endTime 结束时间的时间戳
  • @return {string} str 返回时间字符串
    */
    function getTimeInterval(startTime, endTime) {
    let runTime = parseInt((endTime - startTime) / 1000);
    let year = Math.floor(runTime / 86400 / 365);
    runTime = runTime % (86400 * 365);
    let month = Math.floor(runTime / 86400 / 30);
    runTime = runTime % (86400 * 30);
    let day = Math.floor(runTime / 86400);
    runTime = runTime % 86400;
    let hour = Math.floor(runTime / 3600);
    runTime = runTime % 3600;
    let minute = Math.floor(runTime / 60);
    runTime = runTime % 60;
    let second = runTime;
    let str = ‘’;
    if (year > 0) {
    str = year + ‘年’;
    }
    if (year <= 0 && month > 0) {
    str = month + ‘月’;
    }
    if (year <= 0 && month <= 0 && day > 0) {
    str = day + ‘天’;
    }
    if (year <= 0 && month <= 0 && day <= 0 && hour > 0) {
    str = hour + ‘小时’;
    }
    if (year <= 0 && month <= 0 && day <= 0 && hour <= 0 && minute > 0) {
    str = minute + ‘分钟’;
    }
    if (year <= 0 && month <= 0 && day <= 0 && hour <= 0 && minute <= 0 && second > 0) {
    str += second + ‘秒’;
    }
    str += ‘前’;
    return str;
    }

##按类型格式化日期

/**

  • @param {*} date 具体日期变量
  • @param {string} dateType 需要返回类型
  • @return {string} dateText 返回为指定格式的日期字符串
    */
    function getFormatDate(date, dateType) {
    let dateObj = new Date(date);
    let month = dateObj.getMonth() + 1;
    let strDate = dateObj.getDate();
    let hours = dateObj.getHours();
    let minutes = dateObj.getMinutes();
    let seconds = dateObj.getSeconds();
    if (month >= 1 && month <= 9) {
    month = “0” + month;
    }
    if (strDate >= 0 && strDate <= 9) {
    strDate = “0” + strDate;

}
if (hours >= 0 && hours <= 9) {
hours = “0” + hours
}
if (minutes >= 0 && minutes <= 9) {
minutes = “0” + minutes
}
if (seconds >= 0 && seconds <= 9) {
seconds = “0” + seconds
}

let dateText = dateObj.getFullYear() + ‘年’ + (dateObj.getMonth() + 1) + ‘月’ + dateObj.getDate() + ‘日’;
if (dateType == “yyyy-mm-dd”) {
dateText = dateObj.getFullYear() + ‘-’ + (dateObj.getMonth() + 1) + ‘-’ + dateObj.getDate();
}
if (dateType == “yyyy.mm.dd”) {
dateText = dateObj.getFullYear() + ‘.’ + (dateObj.getMonth() + 1) + ‘.’ + dateObj.getDate();
}
if (dateType == “yyyy-mm-dd MM:mm:ss”) {
dateText = dateObj.getFullYear() + ‘-’ + month + ‘-’ + strDate + ’ ’ + hours + “:” + minutes + “:” + seconds;
}
if (dateType == “mm-dd MM:mm:ss”) {
dateText = month + ‘-’ + strDate + ’ ’ + hours + “:” + minutes + “:” + seconds;
}
if (dateType == “yyyy年mm月dd日 MM:mm:ss”) {
dateText = dateObj.getFullYear() + ‘年’ + month + ‘月’ + strDate + ‘日’ + ’ ’ + hours + “:” + minutes + “:” + seconds;
}
return dateText;
}

判断是否为闰年

/**

  • @param {number} year 要判断的年份
  • @return {boolean} 返回布尔值
    */
    function leapYear(year) {
    return !(year % (year % 100 ? 4 : 400));
    }

##返回两个年份之间的闰年

/**

  • @param {number} start 开始年份
  • @param {number} end 结束年份
  • @return {array} arr 返回符合闰年的数组
    */
    function leapYears(start, end) {
    let arr = [];
    for (var i=start; i<end; i++) {
    if ( leapYear(i) ) {
    arr.push(i)
    }
    }
    return arr
    }

##判断时间格式是否有效

/**

  • 短时间,如 (10:24:06)
  • @param {string} str 需要验证的短时间
  • @return {boolean} 返回布尔值
    */
    function isTime(str) {
    var a = str.match(/^(\d{1,2})(😃?(\d{1,2})\2(\d{1,2})$/);
    if (a == null) { return false; }
    if (a[1] >= 24 || a[3] >= 60 || a[4] >= 60) {
    return false
    }
    return true;
    }

/**

  • 短日期,形如 (2019-10-24)
  • @param {string} str 需要验证的短时间
  • @return {boolean} 返回布尔值
    */
    function strDateTime(str){
    var result = str.match(/^(\d{1,4})(-|/)(\d{1,2})\2(\d{1,2})$/);
    if (result == null) return false;
    var d = new Date(result[1], result[3] - 1, result[4]);
    return (d.getFullYear() == result[1] && d.getMonth() + 1 == result[3] && d.getDate() == result[4]);
    }

/**

  • 长日期时间,形如 (2019-10-24 10:24:06)
  • @param {string} str 需要验证的短时间
  • @return {boolean} 返回布尔值
    */
    function strDateTime(str){
    var result = str.match(/^(\d{4})(-|/)(\d{1,2})\2(\d{1,2}) (\d{1,2})😦\d{1,2})😦\d{1,2})$/);
    if (result == null) return false;
    var d = new Date(result[1], result[3] - 1, result[4], result[5], result[6], result[7]);
    return (d.getFullYear() == result[1] && (d.getMonth() + 1) == result[3] && d.getDate() == result[4] && d.getHours() == result[5] && d.getMinutes() == result[6] && d.getSeconds() == result[7]);
    }

##验证日期大小

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!**

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值