Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di supermac
    Registrato dal
    Jun 2001
    Messaggi
    1,857

    Sito multilingua, problema date - globalization

    Sto convertendo un sito webforms in multilingua perciò sto usando i resource files.
    Al login quindi riconosco l'utente, vedo da una tabella in che lingua vuole vedere il sito, forzo la globalization alla culture desiderata e in base a quella tutte le labels e i testi del sito vengono presi da un file resx piuttosto che da un altro.
    Tutto benissimo sul lato dei testi, il problema mi viene quando uso i dati dei vari form per inserire ad esempio le date.
    Il Cdate(nomecampo.text) di un campo che contiene una data nel formato dd/MM/yyyy, se la culture è it-IT non crea nessun problema ma quando la culture è en-US mi crea un'eccezione perchè la stringa non può essere convertita in data.

    Come risolvo?
    Sono piuttosto preoccupato: devo inserire dati in db e può succedere di inserirli con una culture o con l'altra ma poi può anche capitare che li legga e li mostri con la culture diversa da quella con cui sono stati inseriti... prevedo grattacapi.
    W la Ferari effetrenavenave!
    il computer è un somaro veloce! (neanche tanto ndr)

  2. #2
    Moderatore di Windows e software L'avatar di URANIO
    Registrato dal
    Dec 1999
    residenza
    Casalpusterlengo (LO)
    Messaggi
    1,255
    Semplicemente in america le date sono MM/dd/yyyy e gli utenti le inseriranno così.

    Piccolo suggerimento, non usare cdate, valida la data prima in base alla culture info, non far andare in eccezione la mappa per input errato, il top sarebbe guidare l'utente nell'inserimento della data con un datepicker o qualcosa del genere.

  3. #3
    Utente di HTML.it L'avatar di supermac
    Registrato dal
    Jun 2001
    Messaggi
    1,857
    Non è che risolvo col datepicker:
    Il problema mi esce nel backend quando devo settare, ad esempio, un parametro per una query di inserimento in un campo data.
    Nel campo del form ho un textbox contenente una data inserita col datepicker jquery (con il dateformat definito in 'dd/mm/yy') e quando setto il parametro così
    codice:
    cmd.Parameters.AddWithValue("datcons", CDate(datacons.Text))
    se la culture è it-IT non dice niente, se invece è en-US mi solleva giustamente eccezione, ma come faccio a gestire entrambe le situazioni?
    Come si fa la validazione in base alla culture?
    W la Ferari effetrenavenave!
    il computer è un somaro veloce! (neanche tanto ndr)

  4. #4
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,886
    ci sono i formati universali, con i trattini: https://docs.microsoft.com/en-us/dot...format-strings

    in c# c'è il metodo che ti aiuta

    codice:
    DateTime x = new DateTime();
    DateTime xUniversale = new DateTime();
    
    
    xUniversale = x.ToUniversalTime();

  5. #5
    Moderatore di Windows e software L'avatar di URANIO
    Registrato dal
    Dec 1999
    residenza
    Casalpusterlengo (LO)
    Messaggi
    1,255
    Quote Originariamente inviata da supermac Visualizza il messaggio
    Non è che risolvo col datepicker:
    ...
    Se fai inserire le date in italiano tanto vale forzare la culture info in italiano lato server.

    Tanto per capirci il tuo problema è solo nella trasformazione della stringa in un date time, se sai a priori in quale formato viene passata la stringa basta che usi il costruttore del date time
    DateTime (int year, int month, int day);
    e gli elementi li prendi facendo uno split della stringa.

  6. #6
    Utente di HTML.it L'avatar di supermac
    Registrato dal
    Jun 2001
    Messaggi
    1,857
    Mi hai abbastanza convinto:
    ho modificato il dateformat del datepicker in funzione della culture così gli italiani vedono le date nel formato 25/12/2019 e gli inglesi vedono 12/25/2019 e poi me la giostro nel backend splittando la stringa sulle backslash e ricomponendo il datetime col suo costruttore... mi pare funzichi o almeno, per ora, vedo che riesco a filtrare un elenco di record su un campo data dandogli in pasto le date con entrambi i formati.
    W la Ferari effetrenavenave!
    il computer è un somaro veloce! (neanche tanto ndr)

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.