Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    Formato data del browser

    salve a tutti,

    come faccio a controllare il formato della data di un browser (italiano, americano, etc...)?

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    ????

    Cerca di spiegarti meglio.

    Cosa vuoi testare? In quale modo un browser scrive la data? E perche`? A che ti serve?

    In qualche caso forse e` possibile, ma devi essere piu` preciso.
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  3. #3
    allora...
    devo manipolare delle stringhe di tipo "data", che ricevo da un normale campo text, e do per scontato che gli utenti le scrivano in modo corretto. Il problema è che alcuni di loro hanno la data impostata nel formato italiano (gg/mm/aaaa) e altri in formato inglese (mm/gg/aaaa). Per usare il costruttore Date(mm,gg,aaaa) devo sapere quale è il mese e quale il giorno.
    Ho provato con il metodo date.parse, che però accetta una stringa in formato mm/gg/aaaa, calcolando il primo argomento modulo 12.
    per esempio, ho provato così:

    d = new Date();
    mia data = d.setTime(Date.parse("25/10/2005"))

    e il risultato è stato
    "Wed Jan 10 00:00:00 UTC+0100 2007" (cioè ha preso 10 come giorno e ha trasformato 25 nel mese 1!!)

    spero di essere stato chiaro
    ciao

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Quindi il tuo ragionamento e`:
    Se l'utente ha il browser settato per l'inglese sicuramente scrivera` la data secondo la codifica americana, se ha il browser settato in italiano usera` la codifica europea.

    Io non credo che questo sia corretto.
    Anzitutto perche` gli inglesi (europei) scrivono la data gg/mm/aaaa (ma la leggono nel modo inglese); secondo perche` si trovano molti browser in lingua inglese anche in Italia (e nel resto del mondo); terzo perche` un modo altrettanto valido per scrivere uan data e` aaaa/mm/gg: questo e` il modo in cui il W3C consiglia di usare.

    A mio parere la soluzione sta nello specificare l'ordine in cui si vuole il campo riempito, e poi testare (nei limiti del possibile) se l'utente ha seguito il consiglio.
    Esempio:
    inserisci la data (gg/mm/aaaa) |_________|

    Poi per il test puoi sbizzarrirti con le RegExp, ad esempio:
    /\d|([0-2]\d)|(3|[12])[\/\.\-]\d|(0[1-9])|(1[0-2])[\/\.\-]\d{2}|\d{4}/

    Chiaramente questo test non puo` segnalare se uno scrive 9/11/2005, ma per i giorni superiori a 12 funziona.
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  5. #5
    io ho semplificato il problema, ma in realtà l'utente "non può" scegliere il formato, perché seleziona la data utilizzando una applet java, e il campo testo su cui la applet scrive la data è controllato da un'altra applicazione (sulla quale non posso intervenire) che ne forza il formato a quello impostato sul browser.
    Per cui, se quello ha il browser settato sul formato inglese, e mi scrive 25/10/2005, gli viene segnalato un errore.
    Quindi non posso chiedere all'utente di scrivermi la data in formato gg/mm/aaaa (altrimenti lo avrei già fatto), ma devo arrangiarmi con quello che mi manda

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    La cosa inizia a diventare interessante.

    Io ti posso suggerire un trucco, ma devi implementarlo e testarlo (non l'ho mai fatto nemmeno io).

    var prova = new Date(2005,9,25);
    var str = prova.toLocaleString();
    if(str.substr(0,10)=="25/09/2005") alert("formato data italiano");
    else ...

    Nota che devi verificare che il formato sia effettivamente quello della stringa che ho scritto io (fai un alert(str), prima), ed eventualmente modificare la stringa o usare un metodo piu` elastico (RegExp) per il test.
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  7. #7
    forse siamo sulla strada giusta...
    il metodo tolocalestring restituisce "martedi 25 ottobre 2005 0.00.00", e da questo posso ricavare il formato, cazzu iu! :P

    grazie!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.