web-dev-qa-db-fra.com

DateTime.Parse American Date Format C #

Probablement une simple question - 

Je lis des données d'un certain nombre de fichiers. 

Mon problème est que, quand je lis la date d'un fichier américain, je l'analyse comme si:

DateSold = DateTime.Parse(t.Date)

Ceci analyse la chaîne t.Date dans un format de date, mais il formate la date américaine en une date européenne, par exemple.

Si la date est dans le fichier 03/01/2011, elle est lue le 3 janvier 2011, alors qu'elle devrait être le 1er mars 2011. 

Y a-t-il un moyen de faire cela pour que les formats soient à la date européenne? 

19
109221793
var dt = DateTime.ParseExact(t.Date, "MM/dd/yyyy", CultureInfo.InvariantCulture);

Le DateTime lui-même n'a pas de formatage, c'est seulement lorsque vous le convertissez en ou à partir d'une chaîne que le format est pertinent.

Pour afficher votre date au format américain, vous passez le format à la méthode ToString.

string americanFormat = dt.ToString("MM/dd/yyyy");
30

Si vous analysez la date à partir d'un fichier spécifiquement formaté aux États-Unis, transmettez simplement les informations relatives à la culture américaine à la fonction d'analyse comme suit:

var usCulture = "en-US";
var dateValue = DateTime.Parse(dateString, new CultureInfo(usCulture, false));

De cette façon, vous pouvez simplement échanger la chaîne de culture par région différente requise pour l'analyse. En outre, vous n'avez plus besoin de rechercher les nuances de format de date/heure spécifiques à chaque culture, car .Net s'en charge pour vous comme prévu.

16
Brian Scott

Utilisez DateTime.ParseExact ou DateTime.TryParseExact lors de l'analyse syntaxique et spécifiez une chaîne de format lorsque vous formatez avec ToString également.

Notez qu’il n’existe pas de "date américaine" après son analyse. La valeur DateTime a le concept de formatage no.

Il semble que la partie Parse ne vous intéresse pas autant que la partie mise en forme, par exemple.

string formatted = dt.ToString("dd/MM/yyyy", CultureInfo.InvariantCulture);

... mais je vous recommanderais de contrôler explicitement le formatage et.

Si vous avez des formats de fichier différents, vous devrez donner des chaînes de format différentes lorsque vous lisez chaque fichier. Comment vous avez ensuite format les données est une décision distincte.

6
Jon Skeet

Si vous connaissez le format à l'avance, vous pouvez utiliser DateTime.ParseExact , en utilisant le format américain comme chaîne de format.

1
dsolimano
string formatteddate=DateTime.Now.ToString("d") // output: 11/8/2012    
string formatteddate=DateTime.Now.ToString("D") // output: Monday, November 08, 2012    
string formatteddate=DateTime.Now.ToString("f") // output: Monday, November 08, 2012 3:39 PM    
string formatteddate=DateTime.Now.ToString("g") // output: Monday, November 08, 2012 3:39:46 PM    
string formatteddate=DateTime.Now.ToString("d") // output: 11/8/2012 3:39 PM

Plus de format date-heure en asp.net est donné ici.

http://dateformat.blogspot.in/2012/09/date-time-format-in-c-aspnet.html

0
Raj kumar