Descrição do problema e etapas para reproduzir:
console.log('>>>>>>.', moment(valor).format('MM-DD-AAAA'),momento(valor).format('AAAA-MM-DD'));
Não tenho certeza de onde esse erro foi gerado, não consigo rastrear. Eu tinha adicionado mensagem de aviso.
Meio Ambiente:
Ubuntu, navegador chrome.
OBTENDO ABAIXO DA QUESTÃO
Aviso de descontinuação: o valor fornecido não está em um formato ISO reconhecido. momento construção volta para js Date(), que não é confiável em todos os navegadores e versões. Formatos de data não ISO são desencorajados e serão removidos em uma próxima versão principal. Consulte http://momentjs.com/guides/#/warnings/js -date/ para obter mais informações.
Argumentos:
[0] _isAMomentObject: true, _isUTC: false, _useUTC: false, _l: undefined, _i: 27/04/2016, _f: undefined, _strict: undefined, _locale: [object Object]
Erro
Essa mensagem de aviso ocorre quando você cria um Moment a partir de uma string que não está em um formato ISO 8601 compatível (consulte http://momentjs.com/docs/#/parsing/string/ para obter uma lista de formatos compatíveis).
Nesse caso, parece que você tentou analisar a string 27/04/2016
, que não é um formato ISO. Você pode analisar este formato sem um aviso se informar ao Moment qual é o formato: moment("27/04/2016", "DD/MM/2016")
. Como alternativa, você pode alterar o formato de sua entrada para corresponder à especificação ISO: moment("2016-04-27")
Estou encerrando este problema, pois não é um bug no Moment, mas se você ainda tiver dúvidas, me mencione em uma resposta aqui e tentarei ajudar.
Não sou bem-sucedido quando faço um formato ISO 8601 suportado
Fazer moment(new Date("27/04/2016")).format....
parece funcionar. Mas acho que há alguns problemas nessa abordagem, talvez relacionados a localidades etc.
@ziaulrehmandevsinc Funcionou para mim. Obrigado.
@ziaulrehmandevsinc Também funcionou para mim, obrigado
@ziaulrehmandevsinc Também funcionou para mim. Muito obrigado
Trabalhou para mim. Obrigado
No momento, preferimos não ajustar o código para lidar com esse problema. Dentro do moment.js, onde ele exibe o aviso:
função avisar(msg) {
if (hooks.suppressDeprecationWarnings === false &&
(typeof console !== 'undefined') && console.warn) {
console.warn('Aviso de descontinuação: ' + msg);
}
Como se define "hooks.suppressDeprecationWarnings"? Eu revisei a função de ganchos, mas ela relata que ganchos não são uma função. Usando Aurélia.
Obrigado
@pdesimone
// Suppress the warnings
const moment = require('moment');
moment.suppressDeprecationWarnings = true;
// See what else you can mess with
console.log(Object.keys(require('moment')));
Sim, estou recebendo esse problema usando moment('2018-01-20')
que, até onde posso dizer, é um formato ISO 8601 válido.
Na época, não consegui fazer com que o supressDepreciationWarnings ou outras soluções funcionassem.
Eu fiz isso em todos os meus usos de momento:
moment(valor, formato), ou seja: Valor: 2018-01-20, Formato: AAAA-MM-DD.
Então o aviso não acontece. Aparentemente, se você deixar o momento "tentar" e descobrir o tipo de encontro, você recebe o aviso...
@ziaulrehman40 funcionou para mim, muito obrigado
Se você acha que está lidando com as coisas corretamente e ainda vê o erro, verifique seus tipos de entrada <input type="date" />
gerará erro, mas <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')));
Obrigado: Está funcionando bem, mas preciso saber se isso causará algum problema ao adicionar avisos de supressão de depreciação
Obrigado, @ziaulrehman40 - :kissing_heart:
Em vez de suprimir os avisos, converta o objeto de data em string ISO antes de formatá-lo usando moment
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);
Eu também estou tendo problemas com isso.
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");
O log do console retorna true
, mas recebo a mensagem de erro:
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]
Um console.log na data em que recebo retorna 2020-05-21 19:43:58.099745+00
.
Alguma sugestão?
@kiocosta Desculpe, você está tendo problemas. Você provavelmente deve analisar com um formato. https://momentjs.com/docs/#/parsing/string -format/ Pode ser uma boa pergunta para o Stack Overflow também.
Comentários muito úteis
Fazer
moment(new Date("27/04/2016")).format....
parece funcionar. Mas acho que há alguns problemas nessa abordagem, talvez relacionados a localidades etc.