1
votes

Pourquoi cette double valeur ne peut pas être convertie

Dans le code ci-dessus, j'obtiens les données de date de SpreadsheetDocument. La date examinée ne peut pas être convertie. Mais d'autres dates peuvent être converties.

Pourquoi ne puis-je pas convertir cette date et comment puis-je la convertir de manière différente?

DateTime.FromOADate(double.Parse("05.09.1977"));

Je veux convertir cette chaîne en DateTime avec ceci.


3 Réponses :


4
votes

"05.09.1977 n'est pas un double valide. Il semble que ce soit une date réelle (MONTH.DAY.YEAR ou DAY.MONTH.YEAR).

p> Pour l'analyser en un DateHeure utilisez soit:

DateTime.ParseExact("05.09.1977", "MM.dd.yyyy", CultureInfo.InvariantCulture)

ou

DateTime.ParseExact("05.09.1977", "dd.MM.yyyy", CultureInfo.InvariantCulture)


0 commentaires

3
votes

Par ici:

Console.WriteLine(DateTime.ParseExact("05.09.1977", "dd.MM.yyyy", CultureInfo.InvariantCulture));

Sortie:

05/09/1977 00:00:00


1 commentaires

Vous supposez que 05 est le jour et 09 est le mois, cela pourrait être simplement l'inverse. Je vote en faveur de la réponse de Sean



1
votes

selon le DateTime.FromOADate (Double) méthode doc

Renvoie un DateHeure équivalent à la date d'automatisation OLE spécifiée.

public static DateTime FromOADate (double d);

Paramètres

d Double

Une valeur de date d'automatisation OLE.

donc, vous devez passer un double comme argument

mais double.Parse ("05.09.1977") ???

comment cela peut-il être un double ??

c'est la raison


0 commentaires