Estoy usando moment.js para formatear mi fecha y hora, aquí tengo dos valores de fecha y quiero lograr una función particular cuando una fecha es mayor que la otra. Leí la mayoría de sus documentos, pero no encontré la función para lograr esto. Sé que estará allí.
Este es mi 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');
}
Aquí, estoy comparando dos fechas 2014-03-24T01:15:000 > 2014-03-24T01:14:000
, es decir , esperando que la primera sea mayor que la segunda, pero siempre pasa a la condición else. No se por que
fuente
req.body.timezone
alguna vez hay algo más queZ
? ¿Entonces qué?Debería poder compararlos directamente.
Mostrar fragmento de código
fuente
Object.prototype.valueOf
cuales se anula en el prototipo de momento para devolver una marca de tiempo de época como un número. Entonces esto es similar anow.format('x') > date.format('x')
.moment().format("DD/MM/YYYY")
devolverá una cadena y luego está comparando alfabéticamente y luego el 1 de diciembre vendría antes del 2 de enero, porque también está liderando con días. No lo useformat()
si desea comparar los objetos de momento directamente.Jsfiddle: http://jsfiddle.net/guhokemk/1/
El método devuelve 1 si dateTimeA es mayor que dateTimeB
El método devuelve 0 si dateTimeA es igual a dateTimeB
El método devuelve -1 si dateTimeA es menor que dateTimeB
fuente
Es importante que su fecha y hora es correcta en el formato ISO cuando se utiliza cualquiera de las consultas momentjs :
isBefore
,isAfter
,isSameOrBefore
,isSameOrAfter
,isBetween
Entonces, en lugar de 2014-03-24T01: 14: 000, su fecha y hora debe ser:
de lo contrario, puede recibir la siguiente advertencia de desaprobación y la condición se evaluará como falsa:
fuente
pasar fecha a momento como este se comparará y dará resultado. si no quieres formatearlo quítalo
fuente
Be careful
esto no es más que comparar dos cuerdashttp://momentjs.com/docs/#/query/is-after/
fuente
para la comparación de fecha y hora, puede usar la
valueOf
función del momento que proporciona milisegundos de la fecha y hora, lo que es mejor para la comparación:fuente
fuente