validar validacion vacios moment formularios formulario enviar ejemplos ejemplo con campos antes javascript jquery datetime momentjs

validacion - validar formulario javascript html5



Momento js fecha hora comparaciĆ³n (7)

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 lograrlo. Sé que estará allí.

Este es mi codigo

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, es decir, 2014-03-24T01:15:000 > 2014-03-24T01:14:000 , esperando que la primera sea mayor que la segunda, pero siempre va a la condición else. No se por que


Creo que estás buscando las funciones de consulta , isBefore , isSame y isAfter .

Pero es un poco difícil decir exactamente lo que estás intentando. ¿Quizás solo está buscando obtener la diferencia entre la hora de entrada y la hora actual? Si es así, considere la función de diferencia , diff . Por ejemplo:

moment().diff(date_time, ''minutes'')

Algunas otras cosas:

  • Hay un error en la primera línea:

    var date_time = 2013-03-24 + ''T'' + 10:15:20:12 + ''Z''

    Eso no va a funcionar. Creo que quiso decir:

    var date_time = ''2013-03-24'' + ''T'' + ''10:15:20:12'' + ''Z'';

    Por supuesto, usted también podría:

    var date_time = ''2013-03-24T10:15:20:12Z'';

  • Estás utilizando: .tz(''UTC'') incorrectamente. .tz pertenece a moment-timezone . No necesita usar eso a menos que esté trabajando con otras zonas horarias, como America/Los_Angeles .

    Si desea analizar un valor como UTC, utilice:

    moment.utc(theStringToParse)

    O, si desea analizar un valor local y convertirlo en UTC, entonces use:

    moment(theStringToParse).utc()

    O quizás no lo necesites en absoluto. El hecho de que el valor de entrada esté en UTC no significa que tenga que trabajar en UTC a lo largo de su función.

  • Parece que estás recibiendo la instancia "ahora" por moment(new Date()) . En su lugar, puedes usar moment() .

Actualizado

Basado en tu edición, creo que puedes hacer esto:

var date_time = req.body.date + ''T'' + req.body.time + ''Z''; var isafter = moment(date_time).isAfter(''2014-03-24T01:14:00Z'');

O, si desea asegurarse de que sus campos estén validados para estar en el formato correcto:

var m = moment.utc(req.body.date + '' '' + req.body.time, "YYYY-MM-DD HH:mm:ss"); var isvalid = m.isValid(); var isafter = m.isAfter(''2014-03-24T01:14:00Z'');


Deberías poder compararlos directamente.

var date = moment("2013-03-24") var now = moment(); if (now > date) { // date is past } else { // date is future }

$(document).ready(function() { $(''.compare'').click(function(e) { var date = $(''#date'').val(); var now = moment(); var then = moment(date); if (now > then) { $(''.result'').text(''Date is past''); } else { $(''.result'').text(''Date is future''); } }); });

<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.10.3/moment.min.js"></script> <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script> <input type="text" name="date" id="date" value="2014-12-18" placeholder="yyyy-mm-dd"> <button class="compare">Compare date to current date</button> <br> <div class="result"></div>


Es importante que su fecha y hora esté en el formato ISO correcto al usar cualquiera de las consultas de isBefore : isBefore , isAfter , isSameOrBefore , isSameOrAfter , isBetween

Entonces, en lugar de 2014-03-24T01: 14: 000, su fecha y hora debe ser:

2014-03-24T01: 14: 00 o 2014-03-24T01: 14: 00.000Z

de lo contrario, puede recibir la siguiente advertencia de desaprobación y la condición se evaluará como falsa:

Advertencia de deprecación: el valor proporcionado no está en un formato RFC2822 o ISO reconocido. la construcción del momento recae en js Date (), que no es confiable en todos los navegadores y versiones. Los formatos de fecha que no sean RFC2822 / ISO no se recomiendan y se eliminarán en una próxima versión importante. Consulte http://momentjs.com/guides/#/warnings/js-date/ para obtener más información.

// https://momentjs.com/docs/#/query/ const dateIsAfter = moment(''2014-03-24T01:15:00.000Z'').isAfter(moment(''2014-03-24T01:14:00.000Z'')); const dateIsSame = moment(''2014-03-24T01:15:00.000Z'').isSame(moment(''2014-03-24T01:14:00.000Z'')); const dateIsBefore = moment(''2014-03-24T01:15:00.000Z'').isBefore(moment(''2014-03-24T01:14:00.000Z'')); console.log(`Date is After: ${dateIsAfter}`); console.log(`Date is Same: ${dateIsSame}`); console.log(`Date is Before: ${dateIsBefore}`);

<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.0/moment.min.js" ></script>


Jsfiddle: http://jsfiddle.net/guhokemk/1/

function compare(dateTimeA, dateTimeB) { var momentA = moment(dateTimeA,"DD/MM/YYYY"); var momentB = moment(dateTimeB,"DD/MM/YYYY"); if (momentA > momentB) return 1; else if (momentA < momentB) return -1; else return 0; } alert(compare("11/07/2015", "10/07/2015"));

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


Pasa la fecha al momento como este lo comparará y dará resultado. Si no quieres formato quítalo

moment(Date1).format("YYYY-MM-DD") > moment(Date2).format("YYYY-MM-DD")


Tengo que hacer esto en mi caso, cuando el usuario abre una oferta del historial de transacciones si la fecha de inicio de la oferta es menor que la fecha actual que necesitaba para mostrar la fecha actual como fecha de inicio.

var startDate = "20/05/2018"; var date1 = moment().format("YYYY-MM-DD"); var date2 = moment(startDate).format("YYYY-MM-DD"); // and i checked with if statement if(date1 > date2){ // if startDate is less than today startDate = date1; }else{ // if startDate is greater than today }

NOTA: para mí necesitaba convertir ambas fechas en el mismo formato y usé "YYYY-MM-DD".