6
votes

C # Date d'inscription de composant ou je manque quelque chose?

J'ai un problème énorme avec le code suivant: xxx

Le problème est, c # utilise le séparateur de date système au lieu d'utiliser toujours "/" comme je l'ai spécifié. Si j'exécute ce code, je reçois la sortie suivante: xxx

mais si je vais à "Panneau de configuration" -> "Options régionales et linguistiques" et modifier le séparateur de date à "-", je reçois xxx

même si dans la méthode de tostring, j'ai spécifié à utiliser "/". Est-ce que je manque quelque chose ou ceci est un bug de framework c # / .net?


0 commentaires

8 Réponses :


5
votes

Essayez comme ceci: xxx

ou échapper au / xxx


4 commentaires

Ok, maintenant ça marche. BTW, semble plutôt stupide de devoir spécifier cet paramètre si j'écris le format exact que je veux dans la chaîne ...


@Kaharas, / a une signification particulière dans le format => Il représente le séparateur de date pour la culture actuelle.


@kaharas, Aliostad: Pourquoi cela semble-t-il stupide? Seriez-vous attendre dd ou aaaa pour apparaître Verbatim dans la chaîne formatée aussi?


@Lukeh: Les 2 premières réponses, n'ont rien dit sur le "/ l'espace réservateur de la date", mais il suffit de t'appréler pour ajouter le paramètre cultureinfo.invarianTculture. Et, si tel était le cas (C # réinitialiser le format pour utiliser le séparateur de date système), vous n'êtes pas d'accord que cela aurait été assez stupide? Je vois maintenant, l'évasion / "a été ajouté :)



2
votes

invariantCulture devrait faire le tour xxx


0 commentaires

1
votes

Vous pouvez obtenir '-' ou ":" basé sur les formats que vous fournissez. Reportez-vous à http://msdn.microsoft.com/en-us/library/zdtaw1bw. ASPX


0 commentaires

1
votes

Le / est un séparateur de date:

http://msdn.microsoft.com/en-us/library/ 8KB3DDDD4.aspx

Si vous avez besoin de séparateur personnalisé:

http://msdn.microsoft.com/en-us/ Bibliothèque / 8KB3DDDD4.aspx # Datesparator

Le comportement est donc correct


0 commentaires

1
votes

Vous pouvez échapper au caractère / code>, car il s'agit du séparateur de date, comme celui-ci:

var d = DateTime.Now;
var s = d.ToString(@"yyyy\/MM\/dd");


0 commentaires

1
votes

Ceci est apparemment par conception.

Le travail est implémenté dans une classe interne appelée DateTimeformat que vous pouvez voir cet extrait dans formatécustomisé Méthode: xxx

donc il remplace / avec datesparator .


0 commentaires

5
votes

Le / de votre chaîne de format est un espace réservateur à la date Séparateur - Le comportement que vous voyez est par conception et clairement documenté.

Si vous avez besoin d'un / puis Vous devez vous échapper dans votre chaîne de format, qui devrait ensuite ressembler à quelque chose comme "aaayy \ / mm \ / dd" ou "aaa" / "mm" / 'dd ".


0 commentaires

3
votes

Le problème est que / est réservé au caractère de date - ce n'est donc pas un bug - c'est une fonctionnalité que celle-ci est interprétée selon les paramètres régionaux.

Essayez ESPAFAING THE / PACAGE AVEC: < Pré> xxx


0 commentaires