1
votes

Comment puis-je convertir cette chaîne "2012-08-16T19: 20: 30.456 + 08: 00" en DateTime en utilisant C #

Je souhaite convertir une chaîne datetime en Datetime en utilisant C #. Je vais stocker datetime dans la base de données SQL


5 commentaires

Alors, qu'avez-vous essayé jusqu'à présent? Des méthodes Parse générant une erreur?


Remarque: ce n'est pas une valeur DateTime. C'est une valeur DateTimeOffset.


DateTimeOffset.TryParseExact Profitez RTM.


lorsque j'utilise pour convertir en utilisant Datetime.ParseExact Error se produit "System.FormatException: 'String' 2012-08-16T19: 20: 30.456 08:00 'n'était pas reconnu comme un DateHeure valide.'"


@janith jayaweera: vous n'avez pas + avant le fuseau horaire


4 Réponses :


4
votes

La chaîne de votre exemple a un composant de décalage afin que vous puissiez utiliser DateTimeOffset :

var dateTimeOffset = DateTimeOffset.Parse("2012-08-16T19:20:30.456+08:00", CultureInfo.InvariantCulture);

À partir des documents liés:

La structure DateTimeOffset inclut une valeur DateTime, ainsi que une propriété Offset qui définit la différence entre le courant DateTimeOffset date et heure de l'instance et temps universel coordonné (UTC).


3 commentaires

La même erreur se produit "System.FormatException: 'String' 2012-08-16T19: 20: 30.456 08:00 'n'a pas été reconnu comme un DateHeure valide.'


Ce n'est pas la chaîne publiée dans votre question ... il manque le signe + . Quelle est la chaîne que vous souhaitez analyser?


Oh. tu as raison. c'est mon paramètre d'url "MessageID = 23 & Status = RECEIVED & UpdatedOn = 2012-08-16T19: 20: 30.‌ 456 + 08: 00" quand j'attrape ce paramètre dans le contrôleur, il s'affiche sans + public ActionResult SendDR (int MessageID, string Status , chaîne UpdatedOn)



2
votes

juste

DateTime date= DateTime.Parse(dateString);


0 commentaires

2
votes
  • Utilisez DateTime.Parse("2012-08-16T19:20:30.456+08:00")
  • Use peut utiliser C # Interactive Windows pour le tester. entrez la description de l'image ici

0 commentaires

2
votes
//string value of date
var iDate = "2012-08-16T19:20:30.456+08:00";  

//Convert.ToDateTime(String)
//This method will converts the specified string representation of a date and time to an equivalent date and time value
var dateConversion1 = Convert.ToDateTime(iDate);

//DateTime.Parse()
//DateTime.Parse method supports many formats. It is very forgiving in terms of syntax and will parse dates in many different formats. That means, this method can parse only strings consisting exactly of a date/time presentation, it cannot look for date/time among text.
var dateConversion2 = DateTime.Parse(iDate);

//DateTime.ParseExact()
//ParseExact method will allow you to specify the exact format of your date string to use for parsing. It is good to use this if your string is always in the same format. The format of the string representation must match the specified format exactly.
var dateConversion3 = DateTime.ParseExact(iDate, "yyyy-MM-dd HH:mm tt", null);

//CultureInfo
//The CultureInfo.InvariantCulture property is neither a neutral nor a specific culture. It is a third type of culture that is culture-insensitive. It is associated with the English language but not with a country or region.
var dateConversion4 = DateTime.ParseExact(iDate, "yyyy-MM-dd HH:mm tt", System.Globalization.CultureInfo.InvariantCulture);

//DateTime.TryParse method
//DateTime.TryParse converts the specified string representation of a date and time to its DateTime equivalent using the specified culture - specific format information and formatting style, and returns a value that indicates whether the conversion succeeded.
DateTime dateConversion5;
DateTime.TryParse(iDate, out dateConversion5);
These are few C# methods which can be used as a conversion string to DATETIME, make sure string is a valid string so that it allows you to convert.

2 commentaires

Correct. quand je passe le paramètre au contrôleur & UpdatedOn = 2012-08-16T19: 20: 30.456 + 08: 00 marque '+' manquante. Il attrape comme 2012-08-16T19: 20: 30.456 08:00 comme ceci.


Oui exactement, la conversion des dates est trop compliquée en C #, chaque fois que le format est invalide, il se produit une erreur, il est donc très difficile de gérer les dates selon mon point de vue. Ha ha