DateTime.Analyser Américain Format De Date C#

probablement une question simple -

je lis les données d'un certain nombre de fichiers.

mon problème, c'est que quand je lis dans la date d'un fichier américain, je l'analyse comme ceci:

DateSold = DateTime.Parse(t.Date)

ceci analyse la chaîne T. Date dans un format de date, cependant il formats la date américaine à une date européenne, par exemple

Si la date est dans le fichier 03/01/2011, c'est de lire que le 3 janvier 2011, alors qu'il devrait être le 1er Mars 2011.

y a-t-il un moyen de le faire de sorte qu'il se formate à la date européenne?

18
demandé sur 109221793 2011-05-09 18:59:01

5 réponses

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

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

pour visualiser votre date au format Américain, vous passez le format à la méthode ToString

string americanFormat = dt.ToString("MM/dd/yyyy");
28
répondu Patrick McDonald 2011-05-09 15:00:33

si vous analysez la date à partir d'un fichier qui est spécifiquement un fichier formaté aux États-Unis, alors passez simplement l'information sur la culture américaine dans 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 à rechercher les nuances de format datetime spécifiques pour chaque culture comme .Net prendra soin de cela pour vous comme prévu.

16
répondu Brian Scott 2011-05-09 15:31:39

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

notez Qu'il n'y a pas de "rendez-vous américain" après avoir été analysé. DateTime la valeur a aucun concept de formatage.

on dirait que vous n'êtes pas vraiment intéressé par le Parse part autant que la partie formatage, par exemple

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

... mais je vous recommande de contrôle à la fois l'analyse syntaxique et mise en forme de manière explicite.

si vous avez des formats de fichier différents, vous aurez besoin de donner des chaînes de format différentes lorsque vous lisez chaque fichier. Comment vous alors format les données sont d'une décision distincte.

6
répondu Jon Skeet 2011-05-09 15:00:46

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

1
répondu dsolimano 2011-05-09 15:00:50
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 dans asp.net est donnée ici.

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

0
répondu Raj kumar 2012-09-14 07:36:57