【问题标题】:How to get the beginning and end of the day with moment?如何用时刻获得一天的开始和结束?
【发布时间】:2018-09-29 06:09:54
【问题描述】:

我想使用moment 获取当天的开始和结束(以及明天通过.add(1, 'day'))。

我现在得到的是

now = moment()
console.log('now ' + now.toISOString())
console.log('start ' + now.startOf('day').toISOString())
console.log('end ' + now.endOf('day').toISOString())
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.1/moment.js"></script>

现在输出

now 2018-04-18T21:20:02.010Z
start 2018-04-17T23:00:00.000Z
end 2018-04-18T22:59:59.999Z

由于时间偏移了一个小时,我相信这与时区有关,尽管我不明白这有什么关系:无论时区如何,该时区中的一天从今天午夜之后开始,并且今天午夜前结束。

【问题讨论】:

  • 时间末尾的“Z”代表“zulu”,通常也称为 UTC 或格林威治标准时间 (GMT)。请参阅我的答案,了解如何改为显示当地时间。

标签: javascript momentjs


【解决方案1】:

它给你当地时间午夜,但你在祖鲁时间打印出来。尝试改用toString,它将以当地时间打印超时。

now = moment()
console.log('now ' + now.toString())
console.log('start ' + now.startOf('day').toString())
console.log('end ' + now.endOf('day').toString())
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.1/moment.js"></script>

【讨论】:

    【解决方案2】:

    如果你想从星期一开始,你必须使用这个moment().startOf('isoWeek');

    console.log({
      from_date: moment().startOf('isoWeek').toString(),
      today: moment().toString(),
      to_date: moment().endOf('isoWeek').toString(),
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-29
      • 1970-01-01
      • 2012-03-12
      • 2012-10-30
      • 2012-02-27
      • 2012-01-28
      • 1970-01-01
      相关资源
      最近更新 更多