Javascript 以秒为单位格式化时间时,MomentJS返回0

Javascript 以秒为单位格式化时间时,MomentJS返回0,javascript,momentjs,Javascript,Momentjs,还做了代码笔,以便您可以查看控制台日志: 也许我是误会了。我有这个,时刻({seconds:0}).set('hour',7).seconds() 我创建了一个moment()对象。我将秒设置为0 然后我设置('hour',7)设置7小时 然后我执行seconds()将最终值转换为秒 根据文档,这应该有效吗?我将秒数设置为0,再加上7小时,然后将最后的时间转换回秒数。但是我要拿0回来 我使用momentjs是错误的还是误会了时间 谢谢正如您链接的文档中所述,asSeconds()返回持续时间,而

还做了代码笔,以便您可以查看控制台日志:

也许我是误会了。我有这个,
时刻({seconds:0}).set('hour',7).seconds()

我创建了一个
moment()
对象。我将
秒设置为0

然后我设置('hour',7)
设置7小时

然后我执行
seconds()
将最终值转换为秒

根据文档,这应该有效吗?我将秒数设置为0,再加上7小时,然后将最后的时间转换回秒数。但是我要拿0回来

我使用momentjs是错误的还是误会了时间


谢谢

正如您链接的文档中所述,
asSeconds()
返回持续时间,而
seconds()
返回时间戳

那就试试这个吧:
console.log(moment.duration({hours:70}).asSeconds(),”对于
moment
的实例,
seconds()
方法获取日期和时间的“秒”部分。该值将介于0和59之间。
seconds()的文档
您所引用的方法属于一个
持续时间
实例,该实例对此方法有不同的实现

看起来您正在尝试获取从某个起点开始的秒数。您可以创建一个
持续时间
实例并调用其
seconds()
方法:

moment.duration({hours: 7}).asSeconds();

moment
实例本身也提供了
unix()
方法,它可以获取自unix纪元(1970年1月1日,星期四UTC)以来经过的秒数。

因此这两个建议的答案很有帮助,但我做了一些不同的事情,没有使用
duration
方法

问题:使用时间选择器,根据用户选择的内容返回
{hour:3}
{minute:3}
的对象。以秒为单位返回该值。这样,在内部,我总是使用秒进行操作,而且更简单

现在,如果我使用上面的
duration
方法,我将第一个用户输入转换为秒,我保存它,然后用户在几分钟内进行更改,我可以将其添加到我保存的初始值中,如果用户执行的时间较短呢?我需要做一些逻辑来确定是否需要执行加法或减法

我想要的是,一个简单的时间;我接受一个小时或分钟的时间。我从一天开始就以秒为单位计算时间。这就是我所拥有的:

let t = moment({ hour: 0, minute: 0, seconds: 0 }).add(savedTime, 'seconds');

t.set({ [hourOrMinute]: userinputTime }).diff(moment().startOf('day'), 'seconds')
因此,我将初始时间设置为0。然后,我将当前保存的时间(以秒为单位)添加到该时间中。然后,我将时间设置为我以前拥有的时间。然后,我从一天开始,对输入的当前时间进行区分,并以秒为单位返回


希望不会有太多的文本,这对某人有帮助。

我不知道momentjs,但正如您在发布的链接中所看到的,使用
asSeconds()
以秒为单位获取持续时间。
seconds()
仅返回以秒为单位的秒数。
如果您想要以秒为单位的持续时间,请使用矩.duration().asSeconds()相反。
如果您的目的是增加7小时而不是设置()的话,为什么不做
moment().add()
@Xixis我不想担心加/减时间或任何事情。有一个时间选择器。用户选择
9AM
。我只想将小时设置为9并转换为秒。加/减小时或分钟之类的东西听起来很凌乱。我可能错了:),但我不能在矩函数上使用
duration
方法。我想设置初始秒值。Suedo代码有点像,所以我的目标是这个
时刻({seconds:PreviousInputSeconds}).set(hour,userSelected9AM).asSeconds()//转换为秒,这样我可以再次设置PreviousInputSeconds
您可以使用。这会给你一个
持续时间
。没有太多的文本,但这一个不应该是公认的答案。即使这是您最后在代码中使用的解决方案,它也无法回答/您最初的问题,即为什么
seconds()
没有返回预期的持续时间。否则,每个人都会/可以用他们适当的高效代码来结束这个问题。