Descripción del problema y pasos para reproducir:
console.log('>>>>>>.', moment(value).format('MM-DD-YYYY'),moment(value).format('YYYY-MM-DD'));
No estoy seguro de dónde se generó este error, no se puede rastrear. Había agregado un mensaje de advertencia.
Ambiente:
Ubuntu, navegador Chrome.
LLEGAR POR DEBAJO DEL PROBLEMA
Advertencia de obsolescencia: el valor proporcionado no está en un formato ISO reconocido. la construcción de momentos recurre a js Date(), que no es confiable en todos los navegadores y versiones. Se desaconsejan los formatos de fecha que no son ISO y se eliminarán en una próxima versión principal. Consulte http://momentjs.com/guides/#/warnings/js -date/ para obtener más información.
Argumentos:
[0] _isAMomentObject: verdadero, _isUTC: falso, _useUTC: falso, _l: indefinido, _i: 27/04/2016, _f: indefinido, _strict: indefinido, _locale: [objeto Objeto]
Error
Este mensaje de advertencia aparece cuando crea un momento a partir de una cadena que no tiene un formato compatible con ISO 8601 (consulte http://momentjs.com/docs/#/parsing/string/ para obtener una lista de formatos compatibles).
En este caso, parece que intentó analizar la cadena 27/04/2016
, que no es un formato ISO. Puede analizar este formato sin una advertencia si le dice a Moment cuál es el formato: moment("27/04/2016", "DD/MM/2016")
. Alternativamente, puede cambiar el formato de su entrada para que coincida con la especificación ISO: moment("2016-04-27")
Estoy cerrando este problema ya que no es un error en Moment, pero si todavía tienes preguntas, mencióname en una respuesta aquí e intentaré ayudarte.
No tengo éxito cuando hago un formato ISO 8601 compatible
Hacer moment(new Date("27/04/2016")).format....
parece funcionar. Pero creo que hay algunos problemas en este enfoque, tal vez relacionados con los lugares, etc.
@ziaulrehmandevsinc Trabajó para mí. Gracias.
@ziaulrehmandevsinc También funcionó para mí, gracias
@ziaulrehmandevsinc También funcionó para mí. Muchas gracias
Trabajó para mi. Gracias
Por el momento, preferiríamos no ajustar el código para manejar este problema. Dentro de moment.js donde muestra la advertencia:
función de advertencia (mensaje) {
if (hooks.suppressDeprecationWarnings === false &&
(tipo de consola !== 'indefinido') && consola.advertencia) {
console.warn('Advertencia de obsolescencia: ' + mensaje);
}
¿Cómo se configura "hooks.suppressDeprecationWarnings"? Revisé la función de ganchos pero informa que los ganchos no son una función. usando aurelio.
Gracias
@pdesimone
// Suppress the warnings
const moment = require('moment');
moment.suppressDeprecationWarnings = true;
// See what else you can mess with
console.log(Object.keys(require('moment')));
Sí, tengo este problema usando moment('2018-01-20')
que, por lo que sé, es un formato ISO 8601 válido.
En ese momento, no pude lograr que supressDepreciationWarnings u otras soluciones funcionaran.
He hecho esto en todos mis usos de momento:
momento (valor, formato), es decir: Valor: 2018-01-20, Formato: AAAA-MM-DD.
Entonces la advertencia no sucede. Aparentemente, si dejas que moment "pruebe" y averiguas el tipo de fecha, recibes la advertencia...
@ ziaulrehman40 funcionó para mí, muchas gracias
Si cree que está manejando las cosas correctamente y aún ve el error, verifique dos veces sus tipos de entrada <input type="date" />
arrojará un error pero <input type="text" />
funciona.
@pdesimone
// Suppress the warnings const moment = require('moment'); moment.suppressDeprecationWarnings = true; // See what else you can mess with console.log(Object.keys(require('moment')));
Gracias: funciona bien, pero necesito saber si causará algún problema al agregar las advertencias de eliminación de desuso
Gracias, @ziaulrehman40 - :kissing_heart:
En lugar de suprimir las advertencias, convierta el objeto de fecha en una cadena ISO antes de formatearlo usando el momento
const moment = require('moment');
const dateFormatString = "YYYY-MM-DD";
function formatDate(dateObject) {
var formatted = moment(dateObject.**toISOString()**).format(dateFormatString);
return formatted;
}
var d = new Date();
var fd = formatDate(d);
console.log(fd);
Yo también estoy teniendo problemas con esto.
console.log(moment(this.entities[i].created_at).isValid());
this.entities[i].created_at = moment(this.entities[i].created_at).format("DD-MM-YYYY HH:mm");
El registro de la consola devuelve true
, pero aparece el mensaje de error:
value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged and will be removed in an upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.
Arguments:
[0] _isAMomentObject: true, _isUTC: false, _useUTC: false, _l: undefined, _i: 21-05-2020 19:43, _f: undefined, _strict: undefined, _locale: [object Object]
Un console.log en la fecha en que lo recibo devuelve 2020-05-21 19:43:58.099745+00
.
¿Alguna sugerencia?
@kiocosta Lamento que estés teniendo problemas. Probablemente debería analizar con un formato. https://momentjs.com/docs/#/parsing/string -format/ También podría ser una buena pregunta para Stack Overflow .
Comentario más útil
Hacer
moment(new Date("27/04/2016")).format....
parece funcionar. Pero creo que hay algunos problemas en este enfoque, tal vez relacionados con los lugares, etc.