【问题标题】:Moment() vs predefined Moment().endof dateMoment() 与预定义的 Moment().endof 日期
【发布时间】:2019-04-15 11:59:44
【问题描述】:

我有一个名为 date 的时刻对象:

(2019 年 4 月 9 日星期二 00:00:00 ...)

我想在最后一刻用同一天替换它:

(2019 年 4 月 9 日星期二 23:59:59 ...)

我尝试使用var date_end = moment().endOf(date)

但它只有在我输入(日、周或年)时才有效 是否可以使用 endOf 或有其他解决方案?

【问题讨论】:

  • 无法理解您的查询
  • moment().endOf('day') 将产生这个输出 =>Tue Apr 09 2019 23:59:59
  • @SyedMehtabHassan 是的,但我希望它在特定日期而不是今天
  • 我在下面有特定日期对象的答案

标签: javascript date momentjs


【解决方案1】:

如果你已经有一个时刻对象,你可以做date.endOf('day')。我认为您误解了文档。

var date = moment('2019-04-09')
console.log('Before endOf', date.format())
date = date.endOf('day')
console.log('after endOf', date.format())
<script src="https://cdn.jsdelivr.net/momentjs/2.14.1/moment-with-locales.min.js"></script>

End of time

通过将原始时刻设置为单位的末尾来改变原始时刻 时间。

这与 moment#startOf 相同,只是不是设置为 一个时间单位的开始,它设置为一个时间单位的结束。

moment().endOf("year"); // set the moment to 12-31 23:59:59.999 this year

【讨论】:

    【解决方案2】:

    您可以将特定日期放在时刻字符串中并获得一天的结束

    date = moment(new Date('Tue Apr 09 2019 00:00:00'));
    console.log('End of day = ' + date.endOf('day').toString())
    <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.1/moment.js"></script>

    【讨论】:

    • 我想在特定日期使用 endof 而不是今天的日期
    • 今天不是 4 月 9 日 今天是 4 月 15 日,我的回答在 9 日有效
    【解决方案3】:

    您可以在使用moment() 解析字符串日期后使用endOf

    或者您可以手动设置小时、分钟、秒和毫秒

    let myMoment = moment('2019-04-09').endOf('day');
    console.log(myMoment);
    
    let myMoment2 = moment('2019-04-09').hour(23).minute(59).second(0).milliseconds(0);
    console.log(myMoment2);
    <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.js"></script>

    【讨论】:

    • 我需要在可变日期(时刻对象)结束而不是今天
    • @mike 你只需要先解析你的变量值,就像这样:moment(yourVariable).endOf('day')
    • @mike 我已经更新了我的答案来解析你的日期值'2019-04-09'
    猜你喜欢
    • 2017-01-29
    • 1970-01-01
    • 2018-04-24
    • 2020-09-04
    • 2021-09-13
    • 2017-05-13
    • 1970-01-01
    • 1970-01-01
    • 2019-08-10
    相关资源
    最近更新 更多