鍍金池/ 問(wèn)答/網(wǎng)絡(luò)安全  HTML/ moment如何選取指定日期到現(xiàn)在的時(shí)間段

moment如何選取指定日期到現(xiàn)在的時(shí)間段

在用datetimepicker日期范圍選擇插件的時(shí)候,想要顯示所有時(shí)間,這里的所有時(shí)間打算指定從某個(gè)時(shí)間開(kāi)始到現(xiàn)在的時(shí)間,請(qǐng)問(wèn)該如何寫? 還有今天該如何寫呢?

ranges: {
            '所有時(shí)間': [moment(), moment()],
            '今天': [],
            '昨天': [moment().subtract(1, 'days'), moment().subtract(1, 'days')],
            '最近7天': [moment().subtract(6, 'days'), moment()],
            '最近30天': [moment().subtract(29, 'days'), moment()],
            '這個(gè)月': [moment().startOf('month'), moment().endOf('month')],
            '上個(gè)月': [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')]
        },
回答
編輯回答
陌如玉

之前項(xiàng)目中用到的,你可以參考一下:

function generateDateAxis(config) {
    // 合并參數(shù)
    let p = Object.assign({
        // 類型
        type: '年',
        // 方向
        direction: 'prev',
        // 模板
        source: '',
        target: 'YYYYMMDD',
        // 開(kāi)始
        start: moment(),
        // 時(shí)間軸長(zhǎng)度,默認(rèn)2個(gè)
        length: 2,
        // 處理時(shí)間軸單個(gè)時(shí)間的方法
        forEach: function (item, idx, axis) {
            return item;
        },
        // 停止添加時(shí)間軸元素的方法
        stop: function (item, idx, axis) {
            return false;
        },
        // 升序 ascend(asc) || 降序 descend(desc)
        sort: 'asc'
    }, config);

    // 時(shí)間類型映射表
    const DATE_TYPE_MAP = {
        'year|年': 'years',
        'month|月': 'months',
        'week|周|星期': 'weeks',
        'day|日|天': 'days',
    };
    // 類型
    let type = '', tstr, treg;

    // 根據(jù)參數(shù)type獲取moment需要加減的單位(年|月|星期|日)
    for (tstr in DATE_TYPE_MAP) {
        treg = new RegExp(tstr);
        if (treg.test(p.type)) {
            type = DATE_TYPE_MAP[tstr];
            break;
        }
    }

    let direction = p.direction === 'prev' ? 'subtract' : 'add', // 減 || 加
        Sattern = p.source || p.target, // 源模板
        Tpattern = p.target, // 目標(biāo)模板
        start = p.start, // 開(kāi)始時(shí)間
        sort = p.sort === 'asc' ? 'unshift' : 'push', // 排序
        unit, // 時(shí)間軸單個(gè)元素
        idx = 0, // 時(shí)間軸下標(biāo)
        newStart;

    // 循環(huán)獲取單個(gè)時(shí)間,并通過(guò)forEach方法處理,然后放入result數(shù)組返回
    let axis = (function loop(l, r) {

        newStart = moment(start, Sattern)[direction](idx, type).format(Tpattern);

        // 處理生成的時(shí)間軸元素
        unit = p.forEach(newStart, idx, r);

        // 處理后的元素合法則放進(jìn)結(jié)果數(shù)組
        r[sort](unit);

        if (r.length === l || p.stop(unit, idx, r)) {
            return r;
        }

        idx++;

        return loop(l, r);

    })(p.length, []);

    return axis;
}


> 用法:

let result = generateDateAxis({
    // 類型
    type: '月',
    // 方向
    direction: 'prev',
    // 模板
    source: 'YYYYMM',
    target: 'YYYY-MM',
    // 開(kāi)始
    start: moment(),
    // 時(shí)間軸長(zhǎng)度,默認(rèn)2個(gè)
    length: 10,
    // 處理時(shí)間軸單個(gè)時(shí)間的方法
    forEach: function (item, idx, axis) {
        return item;
    },
    // 停止添加時(shí)間軸元素的方法
    stop: function (item, idx, axis) {
        return false;
    },
    // 升序 ascend(asc) || 降序 descend(desc)
    sort: 'asc'
});
console.log(result);
2017年2月1日 00:10
編輯回答
法克魷

1、今天:moment()
2、指定時(shí)間:moment('1999-01-01')

new Date(moment()) 可轉(zhuǎn)換成Date類型

2017年12月25日 01:57
編輯回答
別瞎鬧

moment()默認(rèn)不是當(dāng)天嗎?

2017年11月18日 10:43
編輯回答
涼薄

詳情參考這篇文章:http://www.cnblogs.com/beilei...

2017年9月5日 18:16
編輯回答
夏木
console.log(moment().format('MMMM Do YYYY, h:mm:ss a'));// 九月 19日 2017, 10:02:52 上午
console.log(moment().format('dddd')); // 星期二
console.log(moment().format("MMM Do YY"));// 9月 19日 17
console.log(moment().format('YYYY [escaped] YYYY'));// 2017 escaped 2017
console.log(moment().format());// 2017-09-19T10:02:52+08:00

需要導(dǎo)入moment插件使用

2018年7月17日 21:15