如何使用 Moment.js 从日期中删除时间?

IT技术 javascript date momentjs
2021-02-25 23:50:37
formatCalendarDate = function (dateTime) {
    return moment.utc(dateTime).format('LLL');
};

它显示:“28 februari 2013 09:24”

但我想在最后删除时间。我怎样才能做到这一点?

我正在使用Moment.js

6个回答

很抱歉这么晚才加入,但是如果您想删除 a的时间部分moment()而不是对其进行格式化,那么代码是:

.startOf('day')

参考:http : //momentjs.com/docs/#/manipulating/start-of/

我还必须处理多个时区,但发现简单地将 utc().startOf('day') 串起来就足够了: moment("2017-10-09T00:00:00Z").isSameOrAfter(moment("2017-10-09 22:00:00+00:00").utc().startOf('day'), 'day'); true moment("2017-10-09T00:00:00Z").isSameOrAfter(moment("2017-10-09 22:00:00+00:00").startOf('day'), 'day'); false
2021-04-16 23:50:37
为避免改变原始对象,请使用someMoment.clone().startOf('day')moment(someMoment).startOf('day')
2021-04-27 23:50:37
.startOf('day')不会删除时间部分本身,它只是将时间设置为 00:00:00。所以,是的,正如 'collin' 所评论的,保存日期时必须小心。更好的替代方法是使用format('LL'),正如在此线程中已回答的那样。
2021-05-07 23:50:37
如果您在时区之间移动(或者如果您不注意时区),请小心这一点。我遇到了一个问题,我的 UTC 日期被转换为当地时间,然后申请startOf('day'),这是一天的开始固定与moment(moment.utc('2013-10-29T00:00:00+00:00').startOf('day').format('LL')).startOf('day').toDate()
2021-05-09 23:50:37
还要注意这个函数实际上改变了原始对象
2021-05-12 23:50:37

利用 format('LL')

取决于你想用它做什么,format('LL')可以做到这一点。它产生这样的东西:

Moment().format('LL'); // => April 29, 2016
有关更多格式选项,请参阅momentjs.com/docs/#/parsing/string-format
2021-05-16 23:50:37

正确的方法是根据您的要求指定输入,这将为您提供更大的灵活性。

目前的定义包括以下内容

LTS : 'h:mm:ss A', LT : 'h:mm A', L : 'MM/DD/YYYY', LL : 'MMMM D, YYYY', LLL : 'MMMM D, YYYY h:mm A', LLLL : 'dddd, MMMM D, YYYY h:mm A'

您可以使用其中任何一个或更改传递到 moment().format() 的输入。例如,对于您的情况,您可以通过moment.utc(dateTime).format('MMMM D, YYYY').

好的,所以我知道我参加派对已经很晚了。就像晚了 6 年,但这是我需要弄清楚的事情,并将其格式化为 YYYY-MM-DD。

moment().format(moment.HTML5_FMT.DATE); // 2019-11-08

您还可以传入一个参数,例如,2019-11-08T17:44:56.144

moment("2019-11-08T17:44:56.144").format(moment.HTML5_FMT.DATE); // 2019-11-08

https://momentjs.com/docs/#/parsing/special-formats/

formatCalendarDate = function (dateTime) {
    return moment.utc(dateTime).format('LL')
}