Analisar string até o momento com moment.js

Respostas:

205

Você precisa usar a .format()função

MM - número do mês

MMM - Palavra do mês

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

FIDDLE

David East
fonte
E as variáveis ​​de data 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);Dá um erro de data inválido ?????
Andrew Day
3
tente '' var dateCalendarPart = momento (data, 'AAAA / MM / DD'); alerta (data); ''
ranjan
@AndrewDay ... "01-02-2017", "2 de janeiro" ou "1º de fevereiro"? Momentjs não consegue ler sua mente.
leaf
3
Essa resposta funciona apenas porque a string do OP está em um formato de data padrão. A resposta de Stephen Paul mostra como converter qualquer string, em um formato específico, para uma data que possa ser manipulada.
Agamemnus 23/03/19
362

Sempre pareço me encontrar aqui apenas para perceber que o título e a pergunta não estão bem alinhados.

Se você deseja uma data momentânea a partir de uma string :

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

Da documentação do momento :

Em vez de modificar o Date.prototype nativo, Moment.js cria um wrapper para o objeto Date.

Se você deseja um objeto Date javascript a partir de uma string :

const myDate = moment(str, 'YYYY-MM-DD').toDate();
Stephen Paul
fonte
16
Sim, apenas este responde. Análise de cadeia até a data (de entrada ou seja, é str, para fora é a data)
deathangel908
@ deathangel908 Lol, não há necessidade de esclarecimentos, a pergunta é perfeitamente clara.
leaf
20

Não é necessário o moment.js analisar a entrada, pois seu formato é o padrão:

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

folha
fonte
1
Essa é a verdade, não é necessário moment.js se você tiver uma string de data ISO ... Você também pode usar Date.parse para ficar mais claro que está trabalhando com strings ISO (já que o construtor pode usar outros formatos)
Juan Mendes
3
Não funciona no IE8 ... Que surpresa ... Dá NaN.
folha de
@JuanMendes, diz o seu link, que Date.parsechama new Date, por isso não deve fazer a diferença.
Sk904861
6

momento foi perfeito para o que eu precisava. OBSERVAÇÃO: ignora as horas e os minutos e apenas funciona se você permitir. Isso foi perfeito para mim, pois minha chamada à API traz de volta a data e a hora, mas eu me preocupo apenas com a data.

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
fonte
0
  • Como alterar qualquer data da string para data do objeto (também com 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);

  • com moment.js:

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

MorLavender
fonte