Как удалить время с даты с помощью Moment.js?

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

Отображается: «28 februari 2013 09:24».

Но я бы хотел убрать время в конце. Как я могу это сделать?

Я использую Moment.js.


person Obsivus    schedule 28.02.2013    source источник
comment
Используйте метод Split для разделения строк   -  person AmGates    schedule 28.02.2013


Ответы (13)


Извините, что вмешался так поздно, но если вы хотите удалить временную часть moment(), а не форматировать, тогда код будет следующим:

.startOf('day')

Ссылка: http://momentjs.com/docs/#/manipulating/start-of/

person Graham Charles    schedule 31.10.2013
comment
Будьте осторожны, если вы переходите между часовыми поясами (или если вы не обращаете внимания на часовые пояса). У меня возникла проблема, когда моя дата в формате UTC преобразовывалась в местное время, затем применялось startOf('day'), которое было началом предыдущего дня. Исправлено с moment(moment.utc('2013-10-29T00:00:00+00:00').startOf('day').format('LL')).startOf('day').toDate() - person colllin; 06.11.2013
comment
Также будьте осторожны, чтобы эта функция фактически изменяла исходный объект. - person Dirk Boer; 08.07.2015
comment
.startOf('day') не удаляет часть времени как таковую, а просто устанавливает время на 00:00:00. Итак, да, как прокомментировал collin, вы должны быть осторожны при сохранении даты. Лучшая альтернатива - использовать format('LL'), как было сказано в этой теме. - person Sudarshan_SMD; 13.12.2016
comment
Чтобы избежать изменения исходного объекта, используйте someMoment.clone().startOf('day') или moment(someMoment).startOf('day'). - person Pang; 23.05.2017
comment
Будьте осторожны, startOf ('day') все сбросит, а не просто установит время на 00:00:00. moment().utc().add(1,'d').startOf('day') вернет объект к сегодняшнему дню. - person Tristan; 20.09.2017
comment
Мне также приходилось иметь дело с несколькими часовыми поясами, но я обнаружил, что достаточно просто ввести 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 - person RubberDuckRabbit; 12.10.2017
comment
Это может быть проблематично с часовыми поясами, например: console.log(moment().tz('America/Los_Angeles').startOf('day').format()); выплевывает 2018-03-09T00:00:00-08:00 и console.log(moment().startOf('day').format()); выплевывает 2018-03-10T00:00:00+08:00 - person Jaime Cham; 10.03.2018
comment
@Tristan Неточно, startOf('day') изменяет объект на начало дня, на которое он уже указывал. Возможно, преобразование в utc привело к смещению дня на вчерашний день, а затем добавление 1d вернуло его к сегодняшнему дню. - person Michael Mrozek; 26.06.2020

Используйте 1_

В зависимости от того, что вы пытаетесь с этим сделать, format('LL') может помочь. Это производит что-то вроде этого:

Moment().format('LL'); // => April 29, 2016
person Joshua Pinter    schedule 30.04.2016
comment
См. momentjs.com/docs/#/parsing/string-format для больше возможностей форматирования. - person LMB; 25.07.2020

Правильный способ - указать ввод в соответствии с вашими требованиями, что даст вам больше гибкости.

Настоящее определение включает следующее

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

person Sahil Jain    schedule 01.03.2017

Ладно, я знаю, что опаздываю на вечеринку. Примерно на 6 лет позже, но это было то, что мне нужно было выяснить и отформатировать ГГГГ-ММ-ДД.

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/

person Mix Master Mike    schedule 09.11.2019
comment
Прекрасно работает !!! - person Ibad Shaikh; 29.11.2020

Вы также можете использовать этот формат:

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

person Hashmita Raut    schedule 04.01.2017

В более новых версиях moment.js вы также можете сделать это:

var dateTime = moment();

var dateValue = moment({
    year: dateTime.year(),
    month: dateTime.month(),
    day: dateTime.date()
});

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

person Torben Koch Pløen    schedule 10.09.2015
comment
Разве это не было бы date: dateTime.date() вместо day: dateTime.date()? - person philfreo; 26.10.2016
comment
«День и дата оба означают день месяца». из документов. day работает до версии 2.8.4. - person oldwizard; 17.05.2017

Взгляните на эти примеры.

Форматировать даты

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
person Ankit Kumar Rajpoot    schedule 07.12.2020

Всякий раз, когда я использую библиотеку moment.js, я указываю желаемый формат следующим образом:

moment(<your Date goes here>).format("DD-MMM-YYYY")

or

moment(<your Date goes here>).format("DD/MMM/YYYY")

... и т. д. Надеюсь, вы уловили идею

Внутри функции форматирования вы помещаете желаемый формат. В приведенном выше примере будут удалены все нежелательные элементы даты, такие как минуты и секунды.

person Adrian Grzywaczewski    schedule 16.10.2017
comment
Это не лучшая идея, если вы когда-нибудь захотите отображать свой контент в разных регионах. Если вы хотите отображать даты в правильном формате для локали пользователя, вам необходимо использовать один из предустановленных форматов даты (L, LL и т. Д.) - person AJ Richardson; 03.04.2018
comment
Почему ты трижды ставил МММ. - person Menai Ala Eddine - Aladdin; 24.04.2020
comment
МММ выдаст вам 3 первых буквы месяца. 'Apr' MMMM даст вам полное название месяца - person Adrian Grzywaczewski; 24.04.2020

Людям вроде меня нужен длинный формат даты (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);
person AJ Richardson    schedule 02.04.2018
comment
Наконец-то разумный ответ. Примите мой голос, сэр! Кажется, проблема еще не решена. - person oyalhi; 01.08.2019

Вы можете использовать этот конструктор

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') )
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>

person acucchieri    schedule 23.08.2018
comment
Добавьте сюда описание руды - person Mathews Sunny; 23.08.2018
comment
Это интересно! Он создает момент и преобладает над часом, минутами и секундами, но при этом сохраняет второстепенную дату. Интересно, потому что я бы предположил, что moment({h:0, m:0, s:0, ms:0}) дал бы мне 1 января 1970 года, а не сегодня. - person Simon_Weaver; 05.02.2020
comment
Также похоже, что moment({ h: 0 }) делает то же самое. - person Simon_Weaver; 05.02.2020
comment
В документах указано Omitted units default to 0 or the current date, month, and year. - person Simon_Weaver; 05.02.2020

Попробуй это:

moment.format().split("T")[0]
person Keith Blanchard    schedule 28.08.2017
comment
Будьте осторожны с этим методом, так как 1993-06-07T22:00:00.000Z приведет к 1993-06-07, тогда как это начало дня 1993-06-08 - person Tom; 20.11.2017

Я опаздываю, но у меня это сработало идеально:

момент (). формат ('ГГГГ-ММ-ДД')

person Aviv    schedule 04.05.2021

moment(date).format(DateFormat)

Здесь DateFormat должен быть DateFormat = 'YYYY-MM-DD'

person Harsh Vijay Singh    schedule 05.07.2021
comment
Привет, добро пожаловать в SO. Подумайте о том, чтобы сделать тур, чтобы понять, как отвечать на вопросы. Пожалуйста, дайте больше информации о своем решении и используйте Stack Snippet, чтобы показать свой код. - person Diesan Romero; 05.07.2021