【问题标题】:moment utc start from day incorrectUTC 从一天开始的时刻不正确
【发布时间】:2017-11-10 17:41:05
【问题描述】:

我正试图从那个特定日期开始给我几分钟前的时间。我以 UTC 时间格式发送日期。第一种格式为 DD MMM YYYY, h:mm a 是正确的。但是,之前的时间都是 35,这是不正确的。

Sat Nov 11 2017 00:13:45 GMT+0700 (+07)
11 Nov 2017, 12:13 am
35 minutes ago
Sat Nov 11 2017 00:10:46 GMT+0700 (+07)
11 Nov 2017, 12:10 am 
35 minutes ago
Sat Nov 11 2017 00:12:08 GMT+0700 (+07)
11 Nov 2017, 12:10 am 
35 minutes ago
Sat Nov 11 2017 00:07:57 GMT+0700 (+07)
11 Nov 2017, 12:07 am
35 minutes ago

代码:

    console.log(date)
    console.log(moment(date).local().format('DD MMM YYYY, h:mm a'))
    if(today.diff(date, 'days') < 5){
        date = moment(date).local().startOf('day').fromNow()
        console.log(date)            
    }else{
        date = moment(date).local().format('DD MMM YYYY, h:mm a')
    }

【问题讨论】:

  • 注意 .local() 在这里无关紧要。当时刻已经处于本地模式时,它不会做任何事情。 moment(...) 在本地模式下创建时刻。

标签: javascript date momentjs


【解决方案1】:

改用 diff,然后将单位指定为分钟。

let date = '2017/02/22 08:42:22';
let diff = moment(date).diff(moment(date).startOf('day'), 'minutes');

你也可以这样做

let date = '2017/02/22 08:42:22';
let diff = moment(date).diff(moment(date).startOf('day'));

以毫秒为单位返回差异,然后通过

moment.duration(diff).asMinutes();
moment.duration(diff).asHours();

等等

如果你想混合单位,你可以这样做:

`${Math.floor(moment.duration(diff).asHours())}:${moment.duration(diff).minutes()}`

Documentation

编辑:哎呀,忘记了正确的语法。这就是我从记忆中写出来的结果

【讨论】:

  • 这很棒。我怎样才能让它适合我的代码?我想要的是让它在 30 分钟前、3 小时前、4 天前做一些事情,过去 4 天的任何事情都将进入 else 语句,它工作正常。
  • if(date1.diff(date2, 'minutes') &gt; 30) / if(date1.diff(date2, 'hours') &gt; 3) / if(date1.diff(date2 'days') &gt; 4)
  • 当你构造这些条件时,我会先检查最大的时差,然后是第二大的等等。如果你先检查最小的,那么你会遇到 3 小时前和 30 分钟前发生的事情但这对两者都是正确的。 @ThomasCharlesworth
  • moment(date).diff(moment(date).startOf('day'), 'minutes') 返回 13 分钟,这是错误的。日期 = 2017 年 11 月 11 日星期六 00:13:45 GMT+0700 (+07) 但现在是 2017 年 11 月 11 日星期六 01:02:23 GMT+0700 (+07) 应该是 49 分钟
  • 这不是错误的,那是分钟的差异。如果您不指定单位,则将 diff 变量包装在持续时间对象 diff = moment.duration(diff) 然后指定 diff.asHours() 您将获得经过的总小时数,如果您说 diff.hours() 您将获得小时值,而不是考虑分钟,秒等
猜你喜欢
  • 2022-11-30
  • 2013-02-05
  • 2011-12-25
  • 1970-01-01
  • 2018-09-29
  • 2022-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多