формат дати з moment.js


262

У мене є рядок у такому форматі:

var testDate = "Fri Apr 12 2013 19:08:55 GMT-0500 (CDT)"

Я хотів би використовувати moment.js отримати його в такому форматі mm/dd/yyyy : 04/12/2013для відображення.

Я намагався зробити це за допомогою цього методу,

moment(testDate,'mm/dd/yyyy');

Які помилки і каже there is no such method called replace? я підходжу до цього неправильно?

Редагувати:

Я також повинен зазначити, що я використовую попередньо упаковану версію moment.js, упаковану для meteor.js

Object [object Date] has no method 'replace' : The Exact error from the console

Слід стека:

 at makeDateFromStringAndFormat (http://127.0.0.1:3000/packages/moment/lib/moment/moment.js?b4e3ac4a3d0794023a4410e7941c3e179398b5b0:539:29)
    at moment (http://127.0.0.1:3000/packages/moment/lib/moment/moment.js?b4e3ac4a3d0794023a4410e7941c3e179398b5b0:652:24)
    at populateProfileForEdit (http://127.0.0.1:3000/client/views/home/administration/directory/profiles/profiles.js?acfff908a6a099f37312f62892a22b40f82e5e0f:147:25)
    at Object.Template.profile_personal.rendered (http://127.0.0.1:3000/client/views/home/administration/directory/profiles/profiles.js?acfff908a6a099f37312f62892a22b40f82e5e0f:130:13)
    at Spark.createLandmark.rendered (http://127.0.0.1:3000/packages/templating/deftemplate.js?b622653d121262e50a80be772bf5b1e55ab33881:126:42)
    at http://127.0.0.1:3000/packages/spark/spark.js?45c746f38023ceb80745f4b4280457e15f058bbc:384:32
    at Array.forEach (native)
    at Function._.each._.forEach (http://127.0.0.1:3000/packages/underscore/underscore.js?867d3653d53e9c7a171483edbcad9670e12288c7:79:11)
    at http://127.0.0.1:3000/packages/spark/spark.js?45c746f38023ceb80745f4b4280457e15f058bbc:382:7
    at _.extend.flush (http://127.0.0.1:3000/packages/deps/deps.js?9642a93ae1f8ffa8eb1c2475b198c764f183d693:231:11) 

1
Ви використовуєте replace()у своєму коді? Якщо ні, то плагін, який ви використовуєте, неправильно викликає неіснуючий метод.
cereallarceny

Я оновив своє запитання з точною помилкою та слідом стека методом, який викликає "Замінити". Я взагалі не закликаю замінити
Варц,

Відповіді:


591

Другий аргумент moment()- це формат розбору , а не формат відображення .

Для цього потрібно .format()метод :

moment(testDate).format('MM/DD/YYYY');

Також зауважте, що справа має значення. Для місяця, дня місяця та року формат повинен бути великим.


Відмінно. Я спочатку намагався використовувати його так, як цей момент (). Format (), який не вдався. Спасибі
Варц

var obj = {end_date: момент ($ range.activity.endDate) .format ('MM / DD / YYYY')};
Майкл Дж. Калкінс

@MichaelCalkins Вибачте. Для чого це? І чому додаткове посилання на AngularJS ( $scope)?
Джонатан Лоновський

@JonathanLonowski Це може бути будь-яка змінна. Я випадково програмував і шукав цю відповідь. Просто приклад.
Майкл Дж. Калкінс

Щоразу, коли я використовую формат, я не можу зателефонувати на дату (). Тож мені довелося використовувати якусь конструкцію підрядки, щоб схопити день із формату ("DD-MM-YYYY").
Хенк Янсен

49

Включіть moment.js і за допомогою наведеного нижче коду ви можете відформатувати свою дату

var formatDate= 1399919400000;

var responseDate = moment(formatDate).format('DD/MM/YYYY');

Мій вихід "13.05.2014"


1
Як я можу це змінити? Я маю на увазі, якщо я маю пізніший формат і хочу змінити його на перший.
Арслан Тарік

2
@ArslanTariq ви можете використовувати momentObject.valueOf()мілісекунди з епохи.
WesternGun

8
moment().format();                                // "2019-08-12T17:52:17-05:00" (ISO 8601, no fractional seconds)
moment().format("dddd, MMMM Do YYYY, h:mm:ss a"); // "Monday, August 12th 2019, 5:52:00 pm"
moment().format("ddd, hA");                       // "Mon, 5PM"

1
Це допоможе, якби ви пояснили, як цей код вирішує проблему ОП.
Роберт Колумбія

5

Для введення дати використання вихідних даних format. Аргумент другого моменту - для розбору - однак якщо ви його опустите, то ви testDateспричините попередження про депресію

Попередження про депресацію: надане значення не в розпізнаному форматі RFC2822 або ISO ...

щоб опустити це попередження, слід надати формат розбору


Чудово, спочатку я повинен надати ідентифікатор (формат) нашого формату дати, а потім формат бажання. приємний приклад.
Sudhir K Gupta
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.