Regular expressions: validazione date

 

Validare una data con regular expression:

  • Data in formato gg/mm/aaaa:

^(0[1-9]|[12][0-9]|3[01])[/ /.](0[1-9]|1[012])[- /.](19|20)\d\d$

  • Data in formato gg-mm-aaaa

^(0[1-9]|[12][0-9]|3[01])[- /.](0[1-9]|1[012])[- /.](19|20)\d\d$

Se si usa bootstrap, per la validazione delle form è possibile inserire la regex nell’attributo data-regex in un tag di input ed esegiore la validazione con la libreria javacript bootstrap validator:
 



<input type="text"
class="form-control"  id="data" name="data"
required
data-title="Attenzione: il campo data di nascita non è compilato correttamente!"
data-regex="^(0[1-9]|[12][0-9]|3[01])[/ /.](0[1-9]|1[012])[- /.](19|20)\d\d$"/>

Inserendo nella pagina un alert di bootstrap che viene visualizzato in caso di errore di input:


<div class="alert alert-danger" style="display: none;"></div>

JavaScript: operazioni sulle date con moment.js

 

 

Fare operazioni sulle date in javascript, come ad esempio ritrovare la data della settimana o del mese precedente (oggi -7 giorni, oggi-1 mese) richiede la scrittura di varie righe di codice.

Per fare le operazioni sulle date in JavaScript in modo più rapido utilizzo la libreria moment.js

Esempio:

Voglio trovare la data di sette giorni prima e formattarla in gg/mm/aaaa:

  • Il metodo moment() senza parametri restituisce data e ora odierna
  • Il metodo subtract() sottrae valori alla data
  • Il metodo add() aggiunge valori alla data
  • Il metodo format() la formatta

Ottengo la data odierna, sottraggo sette giorni e formatto concatenando le operazioni:


var d=moment().subtract(7,'day').format('DD/MM/YYYY');

 
La reference completa e la documentazione sono disponibili sul sito di moment.js