Je dessine vraiment un blanc sur celui-ci. J'ai travaillé sur la globalisation mais le DateTime semble toujours revenir à la culture de CurrentThread. Je l'ai décomposé en étapes plus petites dans l'espoir de trouver mon problème, mais ça commence à me rendre fou.Comment créer un objet DateTime qui ne soit pas dans la culture en cours
J'ai une zone de texte avec la date exprimée sous forme de chaîne:
// the CurrentThread's culture is de-DE
// My test browser is also set to de-DE
IFormatProvider culture = new System.Globalization.CultureInfo("de-DE",
true);
// en-US culture, what I'd ultimately like to see the DateTime in
IFormatProvider us_culture = new System.Globalization.CultureInfo("en-US",
true);
// correctly reads the textbox value (22.7.2010 into a datetime)
DateTime dt= DateTime.Parse(txtStartDate.Text, culture,
System.Globalization.DateTimeStyles.NoCurrentDateDefault);
// correctly produces a string 7/22/2010
string dt2 = dt.ToString(us_culture);
À ce stade, je veux un DateTime qui est en en-US J'ai essayé à la fois:
DateTime dt3 = Convert.ToDateTime(dt2, us_culture);
DateTime dt3 = DateTime.Parse(dt2, us_culture);
Mais les deux produisent des DE DateTimes. Ma motivation à poser cette question est que le reste de la logique métier va appeler dt2.toString() et entraînera une chaîne de date incorrecte. Je me rends compte que je pourrais changer toString() pour être toString (us_culture) mais je préfère ne pas changer tout le reste de la logique métier pour accommoder ce changement.
Existe-t-il un moyen d'obtenir un DateTime dans une culture autre que la culture de CurrentThread?
Merci pour votre temps, je me suis cogné la tête contre cela pendant trop longtemps.
Je ne comprends pas complètement. Voulez-vous une valeur DateTime différente, ou la chaîne retourne-t-elle de façon incorrecte (excuse si je suis juste dense). Un DateTime est un DateTime indépendamment de la culture. La seule chose qui changerait est la représentation de chaîne. – AllenG