Un po' di howto giusto per incoraggiarvi a provarla
Creazione dell'oggetto
codice:
// formato di default è italiano: 6 gennaio
objdate = new HDate('06/01/2008');
// equivalente alla precedente
objdate = new HDate('06/01/2008', 'it');
// formato inglese: 1 giugno
objdate = new HDate('06/01/2008', 'en');
// formato iso8601: anno/mese/giorno
objdate = new HDate('2008/06/01', 'iso8601');
// Data odierna
objdate = new HDate();
Si noti che per definire la data odierna non è necessario stabilire un formato (it, en o iso8601)
poiché viene creato internamente un oggetto data. Come separatore di data si può usare indistintamente lo slash in avanti (/), il trattino medio (-) o il punto (.), anche in modo misto, ad esempio
codice:
objdate = new HDate('06.01-2008', 'it');
Stabiliamo se la data impostata è valida (se abbiamo istanziato l'oggetto con una data di sistema il controllo di validità non è necessario però è comunque ammissibile):
codice:
if (objdate.isValid()) {
// fai qualcosa
}
Dopo aver assicurato la validità della data dell'oggetto (6 gennaio 2008) vogliamo sapere se, ad oggi, da quella data sono passati almeno 58 giorni
codice:
if (objdate.startFrom().hasAtLeast().days(58).ofInterval()) {
// sono passati almeno 58 giorni
}
Possiamo anche stabilire casi più complessi : ad esempio nel caso oggi fosse il 9 ottobre sarebbero passati almeno 7 mesi e 2 giorni (sempre a partire dal 6 gennaio)?
codice:
if (objdate.startFrom(09/10/2008).hasAtLeast().months(7).days(2).ofInterval()) {
// sono passati almeno 7 mesi e 2 giorni tra il 6 gennaio e il 9 ottobre
}
ma avremmo potuto scrivere la stessa cosa così (in modo più verboso)
codice:
if (objdate.startFrom(09/10/2008).hasAtLeast().months(3).months(4).days(1).days(1).ofInterval()) {
// sono passati almeno 7 mesi e 2 giorni tra il 6 gennaio e il 9 ottobre
}
Si noti che la data definita nel metodo startFrom deve coincidere con quella definita in fase di creazione dell'oggetto: ad esempio il seguente codice porta a conseguenze imprevedibili
codice:
// i formati inseriti nel costruttore e nel metodo startFrom sono diversi!)
var objdate = new HDate('2008-06-01', 'iso8601');
if (objdate.startFrom(09/10/2008).hasAtLeast().months(7).days(58).ofInterval()) {
// sono passati almeno 7 mesi e 1 giorno tra il 6 gennaio e il 9 ottobre
}
Un uso pratico: avete un form in cui proponete un servizio valido per chi è maggiorenne ed un campo 'data di nascita'. Se una persona inserisce come data di nascita il 18/03/1990, potete fare un controllo preventivo lato client con un costrutto del tipo
codice:
var birthday = new HDate('18/03/1990');
if (birthday.isValid()) {
if (birthday.startFrom().hasAtLeast().years(18).ofInterval()) {
// sei maggiorenne
}
else {
var now = new HDate();
alert ('devi aspettare ancora ' + now.getInterval(birthday) + ' giorni.');
}
}
Per ora può bastare...