1
votes

Comment convertir la date jj / mm / aaaa hh: mm: ss AM en mm / jj / aaaa hh: mm: ss: am lançant une exception de diffusion non valide

J'ai une propriété ( string ) nommée cdate dans ce format
25/01/2019 00:41:50

Je veux que ma sortie ressemble à ceci
25/01/2019 00:41:50
Mon code génère une erreur d'exception de diffusion non valide.

Je suis une recrue en C #

J'ai déjà essayé mais ça ne marche pas
cdate.ToString ("MM / jj / aaaa hh: mm: ss")


2 commentaires

cdate est-il de type DateHeure ?


Veuillez nous montrer le code que vous utilisez. Que signifie «ça ne marche pas».


3 Réponses :


2
votes

Quel est le type de propriété cdate ? Je suppose qu'il est de type DateTime et je suppose également que vous essayez de faire quelque chose comme ceci:

cdate = DateTime 
           .ParseExact(cdate, "dd/MM/yyyy hh:mm:ss tt", CultureInfo.InvariantCulture)
           .ToString("MM/dd/yyyy hh:mm:ss tt", CultureInfo.InvariantCulture);

Dans ce cas, vous obtiendrez un casting exception d'exception car vous essayez d'attribuer une valeur string à une variable DateTime ( DateTime.ToString renvoie une chaîne ).

Vous devriez probablement l'assigner à une nouvelle variable de chaîne au lieu d'essayer de l'attribuer à cdate.

Modifier: Étant donné que le type de cdate est string , vous devez le convertir en un objet DateTime , utilisez la méthode ToString pour le convertir au format requis.

cdate = cdate.ToString("MM/dd/yyyy hh:mm:ss")


2 commentaires

cdate est une chaîne


J'ai mis à jour ma réponse avec la bonne façon de convertir la chaîne dans un format de date et d'heure différent.



0
votes

Essayez celui-ci en spécifiant le format de culture (comme vous voulez le format en-US). Exactement cdate est une instance de DateTime ici.

DateTime dt = DateTime.Parse(cdate, CultureInfo.CreateSpecificCulture("en-us"));

si vous recherchez une analyse de DateTime à partir d'une chaîne:

cdate.ToString("G", CultureInfo.CreateSpecificCulture("en-us"));


2 commentaires

c'est le format de chaîne que j'essaie de le stocker à courte date dans DB


@nikhiljain vous devez mettre tous ces petits détails que vous mettez dans les commentaires aux réponses d'autres personnes à votre question.



2
votes

Comme vous l'avez indiqué dans un commentaire à une autre réponse, cdate est de type string .

Vous devrez analyser la chaîne en un DateHeure , puis appelez ToString () pour formater la date au format approprié

var cdate = "25/01/2019 12:41:50 AM";
var dt = DateTime.ParseExact(cdate, "dd/MM/yyyy hh:mm:ss tt", CultureInfo.InvariantCulture);
cdate = dt.ToString("MM/dd/yyyy hh:mm:ss tt");

Cela utilise CultureInfo.InvariantCulture sinon / et : sont remplacés par les séparateurs de date et d'heure de la culture actuelle.


0 commentaires