成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

Date擴(kuò)展-格式化 日期操作(持續(xù)更新)

stormjun / 987人閱讀

摘要:中有很多非常好用的日期操作庫(kù),如但是平常的項(xiàng)目用的的方法有限,未免有些冗余,特提取出比較常用的一些方法有些人可能會(huì)覺(jué)得的方式在方法的擴(kuò)展中更實(shí)用些,確實(shí)如此。

github中有很多非常好用的日期操作庫(kù),如moment.js;但是平常的項(xiàng)目用的的方法有限,未免有些冗余,特提取出比較常用的一些方法

有些人可能會(huì)覺(jué)得Date.prototype.的方式在方法的擴(kuò)展中更實(shí)用些,確實(shí)如此。本中都是多帶帶拉出來(lái)的方法,使用者可自行組裝。

日期格式化
 /** 日期格式化
 * @param {Number String Date} 
 * @param {String} "YYYY-MM-DD HH:mm:ss EEE" 年(Y)、月(M)、日(D)、12小時(shí)(h)、24小時(shí)(H)、分(m)、秒(s)、毫秒(S)、周(E)、季度(q)
 * @return {String}
 * @example XDate.format(new Date(), "YYYY-MM-DD") ==> 2017-08-23
 */
XDate.format = function(date, fmt) {
    fmt = fmt || "YYYY-MM-DD HH:mm:ss";
    if (typeof date === "string") {
        date = new Date(date.replace(/-/g, "/"))
    }
    if (typeof date === "number") {
        date = new Date(date)
    }
    var o = {
        "M+": date.getMonth() + 1,
        "D+": date.getDate(),
        "h+": date.getHours() % 12 === 0 ? 12 : date.getHours() % 12,
        "H+": date.getHours(),
        "m+": date.getMinutes(),
        "s+": date.getSeconds(),
        "q+": Math.floor((date.getMonth() + 3) / 3),
        "S": date.getMilliseconds()
    }
    var week = {
        "0": "u65e5",
        "1": "u4e00",
        "2": "u4e8c",
        "3": "u4e09",
        "4": "u56db",
        "5": "u4e94",
        "6": "u516d"
    }
    if (/(Y+)/.test(fmt)) {
        fmt = fmt.replace(RegExp.$1, (date.getFullYear() + "").substr(4 - RegExp.$1.length))
    }
    if (/(E+)/.test(fmt)) {
        fmt = fmt.replace(RegExp.$1, ((RegExp.$1.length > 1) ? (RegExp.$1.length > 2 ? "u661fu671f" : "u5468") : "") + week[date.getDay() + ""])
    }
    for (var k in o) {
        if (new RegExp("(" + k + ")").test(fmt)) {
            fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)))
        }
    }
    return fmt;
}
閏年判斷

閏年:能被4整除但不能被100整出

/** 判斷是否為閏年
 * @param {Number} yr
 * @return {Boolean}
 */

XDate.isLeapyear = function(yr) {
    return (yr % 4 === 0 && yr % 100 !== 0) || yr % 400 === 0
}
獲取某一年份的指定月份的天數(shù)

閏年的二月是個(gè)特殊值(依賴(lài)與isLeapyear函數(shù))

/** 獲取某一年份的某一月份的天數(shù)
 * @param {Number} year
 * @param {Number} month
 */
XDate.getMonthDays = function(year, month) {
    return [31, null, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month-1] || (XDate.isLeapyear.call(null, year) ? 29 : 28);
}
獲取某個(gè)時(shí)間前/后的時(shí)間
/** 獲取某個(gè)時(shí)間相加/減后的時(shí)間
* @param {Date} date
* @param {Number} num 參數(shù)為正時(shí)時(shí)間前移,為負(fù)時(shí)間后移
* @param {String} type y / m / d / h / m / s / ms
 */
XDate.modify = function (date, num, type) {
    date = this.converDate(date);  
    if (!num) {
        return date;
    }
    switch (type) {
        case "y":
            date.setFullYear(+date.getFullYear() + num);
            break;
        case "m":
            date.setMonth(+date.getMonth() + num);
            break;
        case "d":
            date.setDate(+date.getDate() + num);
            break;
        case "h":
            date.setHours(+date.getHours() + num);
            break;
        case "m":
            date.setMinutes(+date.getMinutes() + num);
            break;
        case "s":
            date.setSeconds(+date.getSeconds() + num);
            break;
        case "ms":
            date.setMilliseconds(+date.getMilliseconds() + num);
            break;
    }
    return date;
}

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/84856.html

相關(guān)文章

  • 前端知識(shí)點(diǎn)總結(jié)——JS高級(jí)(持續(xù)更新中)

    摘要:前端知識(shí)點(diǎn)總結(jié)高級(jí)持續(xù)更新中字符串什么是連續(xù)存儲(chǔ)多個(gè)字符的字符數(shù)組相同下標(biāo)遍歷選取不同類(lèi)型不同不通用所有字符串都無(wú)權(quán)修改原字符串,總是返回新字符串大小寫(xiě)轉(zhuǎn)換統(tǒng)一轉(zhuǎn)大寫(xiě)統(tǒng)一轉(zhuǎn)小寫(xiě)何時(shí)不區(qū)分大小寫(xiě)時(shí),都需要先轉(zhuǎn)為一致的大小寫(xiě),再比較。 前端知識(shí)點(diǎn)總結(jié)——JS高級(jí)(持續(xù)更新中) 1.字符串 什么是: 連續(xù)存儲(chǔ)多個(gè)字符的字符數(shù)組 相同: 1. 下標(biāo) 2. .length 3. 遍歷 4....

    wangzy2019 評(píng)論0 收藏0
  • js操作時(shí)間(持續(xù)更新

    摘要:時(shí)間格式化原型上添加獲取年份。獲取兩個(gè)日期之間的日期計(jì)算天前 1、時(shí)間格式化(Date原型上添加) Date.prototype.format = function() { var s = ; var mouth = (this.getMonth() + 1)>=10?(this.getMonth() + 1):(0+(this.getMonth() + 1)); ...

    DobbyKim 評(píng)論0 收藏0
  • Java? 教程(Date-Time)

    Date-Time Java SE 8發(fā)行版中引入的Date-Time包java.time提供了全面的日期和時(shí)間模型,是在JSR 310:Date and Time API下開(kāi)發(fā)的,盡管java.time基于國(guó)際標(biāo)準(zhǔn)化組織(ISO)日歷系統(tǒng),但也支持常用的全球日歷。 此課程介紹了使用基于ISO的類(lèi)來(lái)表示日期和時(shí)間以及操作日期和時(shí)間值的基本原理。 概述 時(shí)間似乎是一個(gè)簡(jiǎn)單的主題,即便是便宜的手表也能...

    AlphaGooo 評(píng)論0 收藏0
  • 前端那些小眾而又精美的網(wǎng)站及工具

    摘要:寫(xiě)此文的目的是為了總結(jié)在開(kāi)發(fā)中能增加我們開(kāi)發(fā)速度及能給我們帶來(lái)方便的工具與網(wǎng)站及一些小眾框架只限于簡(jiǎn)介不負(fù)責(zé)教程如有相應(yīng)的教程希望大家自薦或推薦我在這里感激不盡讓我們發(fā)現(xiàn)美并記錄它第一次寫(xiě)文章請(qǐng)多多包涵如有我沒(méi)有寫(xiě)到的但又是一些好用的工具及 寫(xiě)此文的目的是為了總結(jié)在開(kāi)發(fā)中能增加我們開(kāi)發(fā)速度及能給我們帶來(lái)方便的工具與網(wǎng)站及一些小眾框架只限于簡(jiǎn)介不負(fù)責(zé)教程如有相應(yīng)的教程希望大家自薦或推薦我...

    Edison 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<