【问题标题】:moment.js add/subtract days without affecting the original datemoment.js 在不影响原始日期的情况下添加/减去天数
【发布时间】:2016-03-04 05:33:50
【问题描述】:

如何使用 moment.js 为默认日期添加或减去天数?

我正在尝试获取一周的开始和结束日期,如下所示:

const current = moment.tz('2016-03-04', 'America/Los_Angeles');
const startOfWeek = current.startOf('isoWeek').weekday(0);
const endOfWeek = current.endOf('isoWeek').weekday(6);

当调用endOfWeek 时,我得到了预期值。 但是,我的问题是 startOfWeekendOfWeek 值覆盖。

我想同时获取startOfWeekendOfWeek 的值

【问题讨论】:

  • 试试这个moment().add(7, 'days'); 。也可以通过this
  • 这仍然覆盖了 startOfWeek 的值
  • 你能创建一个fiddle 吗?

标签: momentjs


【解决方案1】:

您只需要在修改之前先克隆时刻。使用current.clone().whatever...moment(current).whatever...。他们都做同样的事情。

这是必要的,因为时刻是可变的

【讨论】:

    【解决方案2】:

    您需要克隆当前的值,然后执行操作:

    const current = moment.tz('2016-03-04', 'America/Los_Angeles');
    const startOfWeek = current.clone().startOf('isoWeek').weekday(0);
    const endOfWeek = current.endOf('isoWeek').weekday(6);
    

    【讨论】:

    • 如何从格式化的时刻获取 Date 对象?
    【解决方案3】:

    通过获取startOfWeek 的格式并将其保存在变量中来解决问题。然后从新变量中,我将其转换为时刻实例,并从这里得到endOfWeek 值。

    const current = moment.tz('2016-03-04', 'America/Los_Angeles');
    const startOfWeek = current.startOf('isoWeek').weekday(0);
    
    const startOfWeekConvert = startOfWeek.format('YYYY-MM-DD');
    
    const endOfWeek = startOfWeekConvert.endOf('isoWeek').weekday(6);
    

    我现在可以同时获取一周的开始日期和结束日期。

    【讨论】:

    • 这行不通。 startOfWeekConvert 变量是一个字符串,因为您使用format 创建了它。因此,它没有endOf 功能。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-21
    • 2011-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-21
    • 1970-01-01
    相关资源
    最近更新 更多