Analizar cadena hasta la fecha con moment.js

Respuestas:

206

Necesitas usar la .format()función.

MM - Número de mes

MMM - Palabra del mes

var date = moment("2014-02-27T10:00:00").format('DD-MM-YYYY');
var dateMonthAsWord = moment("2014-02-27T10:00:00").format('DD-MMM-YYYY');

VIOLÍN

David East
fuente
¿Qué pasa con las variables de fecha existentes? var date = moment("2014-02-27T10:00:00").format('DD-MM-YYYY'); var dateCalendarPart = moment(date).format('YYYY/MM/DD'); alert(date); alert(dateCalendarPart);Da un error de fecha inválido ?????
Andrew Day
3
intente '' var dateCalendarPart = moment (fecha, 'AAAA / MM / DD'); alerta (fecha); ''
Ranjan
@AndrewDay ... "01-02-2017", "2 de enero" o "1 de febrero"? Momentjs no puede leer tu mente.
hoja
3
Esta respuesta solo funciona porque la cadena del OP está en un formato de fecha estándar. La respuesta de Stephen Paul muestra cómo convertir cualquier cadena, dado un formato específico, a una fecha que pueda ser manipulada.
Agamemnus
363

Siempre me encuentro aterrizando aquí solo para darme cuenta de que el título y la pregunta no están del todo alineados.

Si desea una fecha de momento de una cadena :

const myMoment = moment(str, 'YYYY-MM-DD')

De la documentación del momento :

En lugar de modificar el Date.prototype nativo, Moment.js crea un contenedor para el objeto Date.

Si, en cambio, desea un objeto Date de JavaScript de una cadena :

const myDate = moment(str, 'YYYY-MM-DD').toDate();
Stephen Paul
fuente
16
Sí, solo esta responde. Análisis de cadenas hasta la fecha (es decir, la entrada es str, hacia fuera es la fecha)
deathangel908
@ deathangel908 Lol, no hay necesidad de una aclaración, la pregunta es perfectamente clara.
hoja
20

No es necesario que moment.js analice la entrada ya que su formato es el estándar:

var date = new Date('2014-02-27T10:00:00');
var formatted = moment(date).format('D MMMM YYYY');

http://es5.github.io/#x15.9.1.15

hoja
fuente
1
Esa es la verdad, no necesitas moment.js si tienes una cadena de fecha ISO ... También puedes usar Date.parse para tener más claro que estás trabajando con cadenas ISO (ya que el constructor puede tomar otros formatos)
Juan Mendes
3
No funciona en IE8 ... Qué sorpresa ... Da NaN.
hoja
@JuanMendes, dice su enlace, eso Date.parsellama new Date, por lo que no debería hacer la diferencia.
sk904861
6

El momento fue perfecto para lo que necesitaba. NOTA: ignora las horas y minutos y solo hace lo correcto si lo deja. Esto fue perfecto para mí, ya que mi llamada API me devuelve la fecha y la hora, pero solo me importa la fecha.

function momentTest() {

  var varDate = "2018-01-19 18:05:01.423";
  var myDate =  moment(varDate,"YYYY-MM-DD").format("DD-MM-YYYY");
  var todayDate = moment().format("DD-MM-YYYY");  
  var yesterdayDate = moment().subtract(1, 'days').format("DD-MM-YYYY");   
  var tomorrowDate = moment().add(1, 'days').format("DD-MM-YYYY");

  alert(todayDate);

  if (myDate == todayDate) {
    alert("date is today");
  } else if (myDate == yesterdayDate) {
    alert("date is yesterday");
  } else if (myDate == tomorrowDate) {
    alert("date is tomorrow");
  } else {
    alert("It's not today, tomorrow or yesterday!");
  }
}
gareth
fuente
0
  • Cómo cambiar cualquier fecha de cadena a fecha de objeto (también con moment.js):

let startDate = "2019-01-16T20:00:00.000"; let endDate = "2019-02-11T20:00:00.000"; let sDate = new Date(startDate); let eDate = new Date(endDate);

  • con moment.js:

startDate = moment(sDate); endDate = moment(eDate);

MorLavender
fuente