2009-09-17 12 views
0

Je ne peux pas modifier la valeur de la date au format que je veux.Ceci est mon code.Lorsque j'exécute ce code, je vois mydate comme format mm/jj/aaaa.ce que je manque?Date Format Problème

Dim dateString As String = Date.Now.ToString("dd.MM.yyyy")  
Dim myDate As Date = Date.ParseExact(dateString, "dd.MM.yyyy", Nothing) 

Répondre

11

Vous ne manquez rien. myDate est un Date qui stocke en interne la date sous forme numérique (en tant que UInt64 pour être plus précis). Il ne stocke pas la représentation sous forme de chaîne de la date, et il n'a pas de format en lui-même. Quand il est affiché sous la forme d'une chaîne (par exemple en utilisant la méthode ToString), si aucun format de date n'est spécifié, il utilisera le format par défaut pour la culture actuelle, qui dans votre cas semble être MM/dd/yyyy.

Mise à jour

Je vais essayer de faire un peu plus clair.

Ce que vous éprouvez est en fait un malentendu plutôt commun. Vous avez vraiment besoin de faire une différence entre une date et la représentation sous forme de chaîne d'une date. Ce sont deux choses différentes.

Le Date (qui est un acutally DateTime avec aucune information de temps, donc je vais faire référence à DateTime ici) stocke la date et l'heure interne comme un nombre. Actuellement, où je suis, ce numéro est 9857259848526375120. C'est la date et l'heure actuelles, comme représenté dans un objet DateTime.

Bien que cette valeur soit très utile pour le code, elle n'a pas beaucoup de sens pour les humains. Nous avons un peu plus compliqué la question en décidant d'écrire des dates de différentes manières dans différents pays. Donc, ici en Suède, la date d'aujourd'hui serait écrite comme "2009-09-17", alors qu'en Turquie ce serait "17.09.2009". Donc, pour nous simplifier la vie, chaque fois qu'un objet DateTime est affiché sous forme de texte (dans le débogueur VS, lorsqu'il est imprimé à l'écran, etc.), la valeur numérique est formatée en une chaîne utilisant un format de date. . Ce format sera différent selon les pays. Si aucun format n'est spécifié lors de l'affichage de la chaîne, le format par défaut de la culture en cours sera utilisé. C'est le cas dans la fenêtre de surveillance VS par exemple.

Si vous souhaitez obtenir la représentation de chaîne de l'objet DateTime formaté selon une culture spécifique, vous pouvez passer à la méthode ToString en tant que tel:

myDate.ToString(CultureInfo.GetCultureInfo("tr-TR")) 

Si vous, d'autre part, le besoin pour convertir la date dans un autre format spécifique, vous pouvez utiliser une chaîne de format pour y parvenir:

Dim formattedDate1 As String = myDate.ToString("dd'/'MM'/'yyyy") 
Dim formattedDate2 As String = myDate.ToString("dd.MM.yyyy") 

Notez les guillemets simples autour des caractères/dans la chaîne de format; ils sont nécessaires car le système interprétera par défaut le/comme un espace réservé pour le séparateur de dates de la culture en cours. Si vous souhaitez forcer la date formatée à utiliser un caractère/plutôt que le séparateur normal pour la culture actuelle ('-' en Suède, '.' En Turquie), vous devez y échapper comme dans mon exemple.

+0

Salut, Bien que je reçoive des informations de culture et l'utilise, il ne change pas. J'essaie cela Dim myCultureInfo As New System.Globalization.CultureInfo ("tr-TR") Dim myDate As Date = Date.ParseExact (dateString, "jj.MM.aaaa", myCultureInfo) – Alexander

+0

Comment "voyez-vous" mydate? Dans une fenêtre de surveillance Visual Studio ou à partir de votre sortie de programme? Si ce dernier, comment créez-vous la sortie? – MarkJ

+0

Vous avez manqué mon point. L'objet 'Date' qui est retourné par' ParseExact' * n'a pas de format *. C'est juste un numéro. Afin de le rendre compréhensible pour nous, simples humains, il est converti en une représentation de chaîne compréhensible. C'est quand le format vient dans l'image. Essayez d'ajouter ce code: 'Dim temp As String = myDate.ToString (CultureInfo.GetCultureInfo (" tr-TR "))'. Cela prendra l'objet 'Date' et convertira sa représentation numérique interne de la date en une chaîne, formatée selon les règles turques de mise en forme de la date. –