Allora:
1)
Puoi usare una RegualExpression: /[\d]{2}\/[\d]{2}\/[\d]{4}\ [\d]{2}:[\d]{2}/
Usando la funzione test() della regexp puoi controllare se la stringa è sintatticamente corretta.
La notazione corretta è:
codice:
var dateTester = /[\d]{2}\/[\d]{2}\/[\d]{4}\ [\d]{2}:[\d]{2}/;
var testResult = dataTester.test(strFromInput);
2)
Per fare questo devi prima di tutto parsare un oggetto Date per ogni campo, a partire dai dati inseriti. Poi utilizzi la funzione di date getTime() per ottenere il timestamp dell'oggetto Date (numero di millisecondi dal 1/1/1970) allora ti basta controllare se il timestamp della seconda è maggiore di quello della prima.
Per il parser, mi faccio un po' di pubblicità: ho scritto una serie di migliorie per l'oggetto Date (multibrowser tra l'altro) e i due metodo principali servono per formattare un oggetto Date in una stringa e per ottenere un oggetto Date da una stringa.
Trovi la documentazione qui: http://artorius.netsons.org/new/inde...:web&Itemid=15
Mentre la pagina di download, con esempi, qui: http://artorius.netsons.org/dateextras/ (la pagina è in inglese per comodità di internazionalizzazione).
Usando i date extras ti basta fare:
codice:
var myDate = Date.parseFromFormat(strFromInput, "%d/%m/%Y %H:%i");
Ed in myDate ottieni l'oggetto Date corrispondente.
3)
Per questo ti basta fare un pelo di operazioni su il getTime delle due date:
codice:
var diff = date2.getTime() - date1.getTime();
var minutes = Math.floor(diff / 60 / 1000); //getTime da i millisecondi per questo / 1000, poi per i minuti / 60, il Math.floor() ottiene la base di un numero, tipo 12.22 ottiene 12