formatCalendarDate = function (dateTime) {
return moment.utc(dateTime).format('LLL');
};
它显示:“2013 年 2 月 28 日 09:24”
但我想在最后删除时间。我怎样才能做到这一点?
我正在使用 Moment.js。
很抱歉这么晚才加入,但如果您想删除 moment()
的时间部分而不是格式化它,那么代码是:
.startOf('day')
参考:http://momentjs.com/docs/#/manipulating/start-of/
使用格式('LL')
根据您尝试使用它执行的操作,format('LL')
可以解决问题。它产生这样的东西:
Moment().format('LL'); // => April 29, 2016
正确的方法是根据您的要求指定输入,这将为您提供更大的灵活性。
本定义包括以下内容
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/
您也可以使用这种格式:
moment().format('ddd, ll'); // Wed, Jan 4, 2017
formatCalendarDate = function (dateTime) {
return moment.utc(dateTime).format('LL')
}
每当我使用 moment.js
库时,我都会以这种方式指定所需的格式:
moment(<your Date goes here>).format("DD-MMM-YYYY")
或者
moment(<your Date goes here>).format("DD/MMM/YYYY")
...等我希望你明白
在 format 函数中,放置所需的格式。上面的示例将删除日期中所有不需要的元素,例如分钟和秒
L
、LL
等)
DD/MM/YYYY
(两个 M
)一起使用,这是最好的,因为在比较具有不同语言环境的日期时,这不会中断,其他变体会失败。
使用较新版本的 moment.js,您还可以这样做:
var dateTime = moment();
var dateValue = moment({
year: dateTime.year(),
month: dateTime.month(),
day: dateTime.date()
});
请参阅:http://momentjs.com/docs/#/parsing/object/。
date: dateTime.date()
而不是 day: dateTime.date()
吗?
day
适用于 2.8.4 之前的版本。
看看这些例子。
格式化日期
moment().format('MMMM Do YYYY, h:mm:ss a'); // December 7th 2020, 9:58:18 am
moment().format('dddd'); // Monday
moment().format("MMM Do YY"); // Dec 7th 20
moment().format('YYYY [escaped] YYYY'); // 2020 escaped 2020
moment().format(); // 2020-12-07T09:58:18+05:30
相对时间
moment("20111031", "YYYYMMDD").fromNow(); // 9 years ago
moment("20120620", "YYYYMMDD").fromNow(); // 8 years ago
moment().startOf('day').fromNow(); // 10 hours ago
moment().endOf('day').fromNow(); // in 14 hours
moment().startOf('hour').fromNow(); // an hour ago
日历时间
moment().subtract(10, 'days').calendar(); // 11/27/2020
moment().subtract(6, 'days').calendar(); // Last Tuesday at 9:58 AM
moment().subtract(3, 'days').calendar(); // Last Friday at 9:58 AM
moment().subtract(1, 'days').calendar(); // Yesterday at 9:58 AM
moment().calendar(); // Today at 9:58 AM
moment().add(1, 'days').calendar(); // Tomorrow at 9:58 AM
moment().add(3, 'days').calendar(); // Thursday at 9:58 AM
moment().add(10, 'days').calendar(); // 12/17/2020
多语言环境支持
moment.locale(); // en
moment().format('LT'); // 9:58 AM
moment().format('LTS'); // 9:58:18 AM
moment().format('L'); // 12/07/2020
moment().format('l'); // 12/7/2020
moment().format('LL'); // December 7, 2020
moment().format('ll'); // Dec 7, 2020
moment().format('LLL'); // December 7, 2020 9:58 AM
moment().format('lll'); // Dec 7, 2020 9:58 AM
moment().format('LLLL'); // Monday, December 7, 2020 9:58 AM
moment().format('llll'); // Mon, Dec 7, 2020 9:58 AM
对于像我这样想要长日期格式 (LLLL
) 但没有一天中的时间的人,有一个 GitHub 问题:https://github.com/moment/moment/issues/2505。目前,有一个解决方法:
var localeData = moment.localeData( moment.locale() ),
llll = localeData.longDateFormat( 'llll' ),
lll = localeData.longDateFormat( 'lll' ),
ll = localeData.longDateFormat( 'll' ),
longDateFormat = llll.replace( lll.replace( ll, '' ), '' );
var formattedDate = myMoment.format(longDateFormat);
您可以使用此构造函数
moment({h:0, m:0, s:0, ms:0})
http://momentjs.com/docs/#/parsing/object/
console.log(moment().format('YYYY-MM-DD HH:mm:ss')) console.log(moment({h:0, m:0, s:0, ms:0}).format ('YYYY-MM-DD HH:mm:ss') )
startOf('day')
,然后是 前一天 的开始。用moment(moment.utc('2013-10-29T00:00:00+00:00').startOf('day').format('LL')).startOf('day').toDate()
固定.startOf('day')
本身不会删除时间部分,它只是将时间设置为 00:00:00。所以,是的,正如 'collin' 评论的那样,保存日期时必须小心。更好的选择是使用format('LL')
,正如在此线程中已回答的那样。someMoment.clone().startOf('day')
或moment(someMoment).startOf('day')
。moment("2017-10-09T00:00:00Z").isSameOrAfter(moment("2017-10-09 22:00:00+00:00").utc().startOf('day'), 'day');
truemoment("2017-10-09T00:00:00Z").isSameOrAfter(moment("2017-10-09 22:00:00+00:00").startOf('day'), 'day');
false