仅从 Datetime Moment.js 对象中提取时间

Posted

技术标签:

【中文标题】仅从 Datetime Moment.js 对象中提取时间【英文标题】:Extract time only from a Datetime Moment.js object 【发布时间】:2017-08-15 10:23:29 【问题描述】:

我在下面有 Moment.js 日期对象 marketStartTime

我想从上述对象中提取时间(小时、秒和上午/下午)并将其保留为时刻对象(而不仅仅是字符串)。

我在下面想出了一个丑陋的方法:

moment(moment(marketStartTime, TIME_FORMAT).format(TIME_FORMAT), TIME_FORMAT)

我先将时刻转换为时间字符串,然后再将时间字符串转换回时刻。

有没有办法只是从时刻对象中提取时间并将其保留为时刻对象?

【问题讨论】:

moment.duration,对你的问题没用吗? @hosar 我不需要时间范围,我只需要一次。我不知道 moment.duration 在这里可以如何帮助我,但是如果您对此有进一步的了解,那就太好了! @Vtron89 从上述对象中提取时间(小时、秒和上午/下午)并将其保留为时刻对象(而不仅仅是字符串)是什么意思?请注意,时刻对象(如原生 JS 日期)始终表示时间和日期(默认为今天)。 【参考方案1】:

您可以根据日期的开始创建持续时间 我是这样使用的:

        var from = (value.clone()).startOf('d');           
        this.innerValue = m.duration( from: from, to: value );

记得使用 Moment 版本 >2(我使用的是 2.17.1)。从 2.1 版开始,他们改进了对持续时间的支持,请参阅 https://momentjs.com/docs/#/durations/

【讨论】:

【参考方案2】:

你可以试试

moment().format("h:mm:ss a")

我正在寻找最直接的方式。 另外,您可以检查您可以使用的格式here:

【讨论】:

以上是关于仅从 Datetime Moment.js 对象中提取时间的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 moment.js 返回 UTC 日期时间

仅从控制器通过DateTime对象传递日期。尝试多种方式绑定时间

如何在 C# 中仅从 DateTime 序列化 Xml 日期

Moment.js - 显示选定范围内关于用户时区的历史数据

带有 Moment.js 的 Jquery 数据表的终极日期/时间排序插件

moment.js 是单例吗?