lunedì 4 febbraio 2013

Trasformare una stringa in una data in javascript

Trasformare una stringa in una data, in javascript, specialmente se si lavora ad un programma multilingua, dove la lingua del thread dipende dalla lingua dell'utente, può essere un vero delirio. Inoltre, l'oggetto javascript "Date" ha dei metodi di inizializzazione che accetterebbero una stringa, ma che si comportano in maniera diversa, tra le varie versioni di internet explorer. Nemmeno passando la data nel formato internazionale "yyyy-MM-dd", se il thread non è inglese, si è sicuri di trasformare correttamente il dato.

La seguente funzione javascript, sebbene non elegantissima, vi verrà in aiuto e funziona con tutte le versioni di Explorer, firefox e chrome.



function string2Date(theDate, format) {
    if (theDate == null) {
        return new Date();
    }

    var strings = theDate.replace('.', '/').replace('.', '/').split('/');
    var mydate = new Date();

    if (format.substring(0, 1) == 'M') {
        mydate.setFullYear(strings[2], strings[0] - 1, strings[1]);

    }
    else {
        mydate.setFullYear(strings[2], strings[1] - 1, strings[0]);
    }

    return mydate;
}



La funzione accetta in ingresso la stringa contenente la data e il formato in cui essa è espressa. Il formato, è quasi sempre noto, dipende dalla lingua del thread.

es.






   1:  italiano -> 'dd/MM/yyyy'
   2:  tedesco  -> 'dd.MM.yyyy'
   3:  inglese  -> 'MM/dd/yyyy'


A questo punto, ad esempio con un thread italiano, potete usare la funzione un questo modo :






var stringDate = '28/04/2013';

var myDate = string2Date(stringDate , 'dd/MM/yyyy');

Nessun commento:

Posta un commento