2013-07-31 4 views
1

Je rencontre un problème lors de la tentative de lecture d'une date à partir d'une feuille Excel. (La colonne de date est formatée de la même manière que le format de date courte de l'ordinateur sur lequel elle a été ouverte). Je remplis les dates de la feuille excel dans une grille de données avec succès, mais quand j'essaye d'analyser la date (pour la mettre en forme de manière appropriée), j'obtiens une erreur en disant que la chaîne n'était pas une valeur DateTime valide. Le format de date courte de l'ordinateur est jj/mm/aaaa. C'est le code que j'utilise pour essayer d'analyser la date. Le code suivant est un exemple d'où le processus échoue.Utilisation des dates Excel dans vb.net

Dim dateParsed AS DateTime = DateTime.Parse("14/01/2013").ToString("yyyy-MM-dd")

Est-il possible d'obtenir programatically court format de la date du système et utiliser à la place ParseExact ou des suggestions?

+0

Ces liens peuvent vous aider [1] http://msdn.microsoft.com/en-us/library/ms131044%28v=VS.90%29.aspx [2] http: // msdn. microsoft.com/en-us/library/w2sa9yss%28v=VS.90%29.aspx –

+1

@DominicKexel Je l'ai testé et effectivement OPTION STRICT est OFF permet la configuration proposée. – varocarbas

+0

Une note: vous dites que vous pouvez "le formater de manière appropriée". Je pourrais suggérer que la façon la plus appropriée de mettre en forme une date est d'utiliser les formats spécifiques à la culture de l'utilisateur actuel. Forcer "aaaa-MM-jj" sur l'utilisateur n'est peut-être pas la meilleure option. (en fonction de ce que vous avez l'intention de faire avec la chaîne) – hometoast

Répondre

1

Vous voulez analyser exactement, en utilisant les cultures actuelles format court jour?

Dim dt As DateTime = DateTime.ParseExact(str, "d", CultureInfo.CurrentCulture) 

De plus, si vous avez réellement besoin de voir le format ShortDate pour vous-même, utilisez le CurrentCulture.

CultureInfo.CurrentCulture.DateTimeFormat.ShortDatePattern 
-1

Vous pouvez essayer ce morceau de codage

 Dim dt As DateTime = DateTime.Parse("1/14/2013").ToString 

     Dim f As String = Format(dt, "yyyy-MM-dd") 
+0

Pourquoi analysez-vous un objet DateTime appelé "str"? c'est déjà un DateTime. – hometoast