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 :
"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)
Par ici:
Console.WriteLine(DateTime.ParseExact("05.09.1977", "dd.MM.yyyy", CultureInfo.InvariantCulture));
Sortie:
05/09/1977 00:00:00
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
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
"05.09.1977" n'est pas quelque chose qui peut être converti en
double, essayez de l'analyser directement en unDateHeure: docs.microsoft.com/en-us/dotnet/api/… a>Utilisez simplement DateTime.Parse ("05.09.1977") qui par défaut est un DateTime avec le premier jour 1/1/1. Si vous voulez une date OLE où le premier jour est 1/1/1900, prenez l'objet DateTime et utilisez ToOADate.
Pourquoi a-t-il +2? il se demande pourquoi quelque chose qui n'est pas double ne peut pas être analysé pour doubler ...
Au lieu d'essayer
string_with_date -> double -> date, vous devriezstring_with_date -> date