如何从Moment.js中删除日期?

Obs*_*vus 239 javascript date momentjs

formatCalendarDate = function (dateTime) {
    return moment.utc(dateTime).format('LLL');
};
Run Code Online (Sandbox Code Playgroud)

它显示:"28 februari 2013 09:24"

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

我正在使用Moment.js.

Gra*_*les 550

很抱歉跳到这么晚,但如果你想删除片刻的时间部分()而不是格式化它,那么代码是:

.startOf('day')
Run Code Online (Sandbox Code Playgroud)

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

  • 如果您在时区之间(或者如果您没有注意时区),请小心这一点.我有一个问题,我的UTC日期转换为当地时间,*然后*应用`startOf('day')`,这是*上一个*天的开始.修复了'moment(moment.utc('2013-10-29T00:00:00 + 00:00').startOf('day').format('LL')).startOf('day').toDate( )` (83认同)
  • 还要注意,此函数实际上会改变原始对象 (24认同)
  • 这绝对应该是公认的答案 (6认同)
  • `.startOf('day')`不会删除时间部分本身,它只是将时间设置为00:00:00.所以,是的,正如'collin'所评论的那样,在保存日期时你必须要小心.更好的选择是使用`format('LL')`,正如在这个帖子中已经回答的那样. (6认同)
  • 为避免改变原始对象,请使用`someMoment.clone().startOf('day')`或`moment(someMoment).startOf('day')`. (3认同)
  • 我还必须处理多个时区,但发现简单地将 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');`假 (2认同)

Jos*_*ter 35

使用 format('LL')

根据你尝试用它做什么,format('LL')可以做到这一点.它产生这样的东西:

Moment().format('LL'); // => April 29, 2016
Run Code Online (Sandbox Code Playgroud)


Sah*_*ain 19

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

目前的定义包括以下内容

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').


Mix*_*ike 17

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

moment().format(moment.HTML5_FMT.DATE); // 2019-11-08
Run Code Online (Sandbox Code Playgroud)

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

moment("2019-11-08T17:44:56.144").format(moment.HTML5_FMT.DATE); // 2019-11-08
Run Code Online (Sandbox Code Playgroud)

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


AmG*_*tes 9

formatCalendarDate = function (dateTime) {
    return moment.utc(dateTime).format('LL')
}
Run Code Online (Sandbox Code Playgroud)


Has*_*aut 9

您也可以使用这种格式:

moment().format('ddd, ll'); // Wed, Jan 4, 2017


acu*_*eri 8

你可以使用这个构造函数

moment({h:0, m:0, s:0, ms:0})
Run Code Online (Sandbox Code Playgroud)

http://momentjs.com/docs/#/parsing/object/

moment({h:0, m:0, s:0, ms:0})
Run Code Online (Sandbox Code Playgroud)
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') )
Run Code Online (Sandbox Code Playgroud)


小智 8

看看这些例子。

格式化日期

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
Run Code Online (Sandbox Code Playgroud)

相对时间

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
Run Code Online (Sandbox Code Playgroud)

日历时间

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
Run Code Online (Sandbox Code Playgroud)

多区域支持

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
Run Code Online (Sandbox Code Playgroud)


Tor*_*och 6

使用moment.js的较新版本,您还可以执行以下操作:

var dateTime = moment();

var dateValue = moment({
    year: dateTime.year(),
    month: dateTime.month(),
    day: dateTime.date()
});
Run Code Online (Sandbox Code Playgroud)

请参阅:http : //momentjs.com/docs/#/parsing/object/

  • 'day 和 date 键都表示月中的某一天。从文档。`day` 在 2.8.4 版之前有效。 (2认同)

Adr*_*ski 5

每当我使用moment.js库时,我都会以这种方式指定所需的格式:

moment(<your Date goes here>).format("DD-MMM-YYYY")
Run Code Online (Sandbox Code Playgroud)

或者

moment(<your Date goes here>).format("DD/MMM/YYYY")
Run Code Online (Sandbox Code Playgroud)

...等我希望你明白

在 format 函数中,您放置所需的格式。上面的示例将删除日期中所有不需要的元素,例如分钟和秒


AJ *_*son 5

对于像我这样的人想要长日期格式 ( 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);
Run Code Online (Sandbox Code Playgroud)