moment如何选取指定日期到现在的时间段

发布于 2022-09-06 03:37:09 字数 591 浏览 26 评论 0

在用datetimepicker日期范围选择插件的时候,想要显示所有时间,这里的所有时间打算指定从某个时间开始到现在的时间,请问该如何写? 还有今天该如何写呢?

ranges: {
            '所有时间': [moment(), moment()],
            '今天': [],
            '昨天': [moment().subtract(1, 'days'), moment().subtract(1, 'days')],
            '最近7天': [moment().subtract(6, 'days'), moment()],
            '最近30天': [moment().subtract(29, 'days'), moment()],
            '这个月': [moment().startOf('month'), moment().endOf('month')],
            '上个月': [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')]
        },

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

习惯成性 2022-09-13 03:37:09

1、今天:moment()
2、指定时间:moment('1999-01-01')

new Date(moment()) 可转换成Date类型

匿名。 2022-09-13 03:37:09

之前项目中用到的,你可以参考一下:

function generateDateAxis(config) {
    // 合并参数
    let p = Object.assign({
        // 类型
        type: '年',
        // 方向
        direction: 'prev',
        // 模板
        source: '',
        target: 'YYYYMMDD',
        // 开始
        start: moment(),
        // 时间轴长度,默认2个
        length: 2,
        // 处理时间轴单个时间的方法
        forEach: function (item, idx, axis) {
            return item;
        },
        // 停止添加时间轴元素的方法
        stop: function (item, idx, axis) {
            return false;
        },
        // 升序 ascend(asc) || 降序 descend(desc)
        sort: 'asc'
    }, config);

    // 时间类型映射表
    const DATE_TYPE_MAP = {
        'year|年': 'years',
        'month|月': 'months',
        'week|周|星期': 'weeks',
        'day|日|天': 'days',
    };
    // 类型
    let type = '', tstr, treg;

    // 根据参数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, // 目标模板
        start = p.start, // 开始时间
        sort = p.sort === 'asc' ? 'unshift' : 'push', // 排序
        unit, // 时间轴单个元素
        idx = 0, // 时间轴下标
        newStart;

    // 循环获取单个时间,并通过forEach方法处理,然后放入result数组返回
    let axis = (function loop(l, r) {

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

        // 处理生成的时间轴元素
        unit = p.forEach(newStart, idx, r);

        // 处理后的元素合法则放进结果数组
        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',
    // 开始
    start: moment(),
    // 时间轴长度,默认2个
    length: 10,
    // 处理时间轴单个时间的方法
    forEach: function (item, idx, axis) {
        return item;
    },
    // 停止添加时间轴元素的方法
    stop: function (item, idx, axis) {
        return false;
    },
    // 升序 ascend(asc) || 降序 descend(desc)
    sort: 'asc'
});
console.log(result);
音栖息无 2022-09-13 03:37:09
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

需要导入moment插件使用

不寐倦长更 2022-09-13 03:37:09

moment()默认不是当天吗?

豆芽 2022-09-13 03:37:09

详情参考这篇文章:http://www.cnblogs.com/beilei...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文