JS實現各種日期操作方法匯總,真香

大前端高工 2021-09-19 23:21:57 阅读数:682

js 日期 操作方法 操作 方法
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;

}

##按類型格式化日期

  • 1.

/**

  • @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;
    }

## 判斷是否為閏年

  • 1.

/**

  • @param {number} year 要判斷的年份
  • @return {boolean} 返回布爾值
    */
    function leapYear(year) {
    return !(year % (year % 100 ? 4 : 400));
    }
##返回兩個年份之間的閏年

  • 1.

/**

  • @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
    }
##判斷時間格式是否有效

  • 1.

/**

  • 短時間,如 (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]);
    }
##驗證日期大小

  • 1.

/**

  • 例:“2019-10-24” 和 “2019-10-25”
  • @param {string} d1需要驗證的日期1
  • @param {string} d2需要驗證的日期2
  • @return {boolean} 返回布爾值
    */
    function compareDate(d1, d2) {
    return ((new Date(d1.replace(/-/g, “/”))) < (new Date(d2.replace(/-/g, “/”))));
    }
##驗證一個日期是不是今天

  • 1.

/**

  • @param {string} val 需要驗證的日期
  • @return {boolean} 返回布爾值
    */
    function isToday(val){
    return new Date().toLocaleDateString() == new Date(val).toLocaleDateString();
    }
##驗證傳入的日期是否是昨天

  • 1.

/**

  • @param {string} val 需要驗證的日期
  • @return {boolean} 返回布爾值
    */
    function isYesterday(val) {
    var today = new Date();
    var yesterday = new Date(now - 1000 * 60 * 60 * 24);
    var test = new Date(val);
    if (yesterday.getYear() === test.getYear() && yesterday.getMonth() === test.getMonth() && yesterday.getDate() === test.getDate()) {
    return true;
    } else {
    return false;
    }
    }
##設置幾天後的日期

  • 1.

/**

  • @param {string} date 起始日期

最後

在面試前我花了三個月時間刷了很多大廠面試題,最近做了一個整理並分類,主要內容包括html,css,JavaScript,ES6,計算機網絡,瀏覽器,工程化,模塊化,Node.js,框架,數據結構,性能優化,項目等等。

包含了騰訊、字節跳動、小米、阿裏、滴滴、美團、58、拼多多、360、新浪、搜狐等一線互聯網公司面試被問到的題目,涵蓋了初中級前端技術點。

  • HTML5新特性,語義化

  • 瀏覽器的標准模式和怪异模式

  • xhtml和html的區別

  • 使用data-的好處

  • meta標簽

  • canvas

  • HTML廢弃的標簽

  • IE6 bug,和一些定比特寫法

  • css js放置比特置和原因

  • 什麼是漸進式渲染

  • html模板語言

  • meta viewport原理

JS實現各種日期操作方法匯總,真香_Web

JS實現各種日期操作方法匯總,真香_前端_02

版权声明:本文为[大前端高工]所创,转载请带上原文链接,感谢。 https://gsmany.com/2021/09/20210919232157308p.html