Estou usando moment.js para formatar minha data e hora, aqui tenho dois valores de data e quero atingir uma função específica quando uma data é maior que a outra. Eu li a maioria dos documentos deles, mas não encontrei a função para conseguir isso. Eu sei que estará lá.
Este é o meu código:
var date_time = 2013-03-24 + 'T' + 10:15:20:12 + 'Z'
var d = moment(date_time).tz('UTC'); // first date
var now = new Date(),
dnow = moment(now).tz('UTC'),
snow = dnow.minute() % 15,
diffnow = 15 - snow,
tonow = moment(dnow).add('minute', diffnow),
ahead30now = moment(tonow).add('minute', 30);
if (d > ahead30now) {
// allow input time
console.log('UTC TIME DB', d.format());
} else {
}
Editar
var date_time = req.body.date + 'T' + req.body.time + req.body.timezone; // 2014-03-24T01:15:000
var utc_input_time = moment(date_time).utc(); // 2014-03-24T01:15:000
console.log('utc converted date_time', moment(date_time).utc().format("YYYY-MM-DDTHH:mm:SSS"));
var isafter = moment(utc_input_time).isAfter(moment('2014-03-24T01:14:000')); // true
if(isafter === true){
console.log('is after true');
} else {
console.log('is after is false');
}
Aqui, estou comparando duas datas 2014-03-24T01:15:000 > 2014-03-24T01:14:000
, ou seja , esperando que a primeira seja maior que a segunda, mas sempre vá para a condição else. Não sei porque?
fonte
req.body.timezone
algo além dissoZ
? Se sim, o que?Você deve poder compará-los diretamente.
Mostrar snippet de código
fonte
Object.prototype.valueOf
quais é substituído no protótipo do momento para retornar um carimbo de data / hora da época como um número. Então, isso é semelhante anow.format('x') > date.format('x')
.moment().format("DD/MM/YYYY")
retornará uma string e, em seguida, você estará comparando em ordem alfabética e o 1º de dezembro chegará antes de 2 de janeiro, porque você também lidera com dias. Não useformat()
se você quiser comparar os momentos diretamente.Jsfiddle: http://jsfiddle.net/guhokemk/1/
O método retornará 1 se dateTimeA for maior que dateTimeB
O método retornará 0 se dateTimeA for igual a dateTimeB
O método retornará -1 se dateTimeA for menor que dateTimeB
fonte
É importante que a sua data e hora está no correto formato ISO ao usar qualquer um dos consultas momentjs :
isBefore
,isAfter
,isSameOrBefore
,isSameOrAfter
,isBetween
Portanto, em vez de 2014-03-24T01: 14: 000, seu datetime deve ser:
caso contrário, você poderá receber o seguinte aviso de descontinuação e a condição será avaliada como falsa:
fonte
passar a data a um momento como este, ele será comparado e dará resultado. se você não quer formato removê-lo
fonte
Be careful
isso não é nada, mas comparando duas cordashttp://momentjs.com/docs/#/query/is-after/
fonte
para comparação de data e hora, você pode usar a
valueOf
função do momento que fornece milissegundos da data e hora, o que é melhor para comparação:fonte
fonte