String.Format (format, date) ignore le format
Pas sûr de ce qui se passe ici.
J'ai un objet DateTime, et quand j'essaie:
String.Format( "{0:dd/MM/yyyy}", _date)
la valeur renvoyée est:
"24-05-1967"
Ce que je veux, c'est
"24/05/1967"
Quelqu'un peut-il expliquer pourquoi ma chaîne de format est ignoré?
Un peu plus de fond:
C'est une application web qui a commencé la vie comme .net 1.1, et je suis dans le processus de la déplacer jusqu'à 2.0/3.5.
Mise à jour:
Si je change le format de {0:jj:MM:aaaa}, il renvoie 24:05:1967 - c'est uniquement le /dans la chaîne de format qui est changé pour le char.
Résolution:
Lors de la mise à jour de l'application à exécuter en vertu de la 2.0, l'asp.net la mondialisation paramètres ont été foiré.
De propriétés du site web, ASP.NET onglet, Modifiez la Configuration, l'Application de l'Onglet de la culture et de la Culture de l'INTERFACE utilisateur ont été à la fois le premier élément de la liste (af-ZA) pour une étrange raison.
source d'informationauteur chris
Vous devez vous connecter pour publier un commentaire.
Le /est en fait le séparateur de date pour votre culture spécifique qui pourrait être, en d'autres termes, la chaîne de format n'est pas ignoré, mais en fait ils sont utilisés correctement. Regardez ce que CultureInfo est associé avec le thread en cours d'exécution:
Si vous essayez ceci:
Vous obtiendrez la date formatée avec /étant donné que c'est le bon séparateur pour fr-fr. Ce que vous devriez faire est d'utiliser le format de date courte chaîne de caractères et assurez-vous que le fil s'est approprié la culture associée, alors ce serait que vous obtenez ce que vous voulez et il va travailler dans la mondialisation de l'application ainsi:
Espérons que cette aide!
Vous souhaitez utiliser le ToString() méthode de votre objet DateTime pour obtenir la représentation de chaîne que vous êtes après. Une chaîne de format de "jj'/'MM'/'yyyy" vous donnera le format que vous avez décrit. Notez que vous devez vous échapper littérale des caractères dans la chaîne de format d'utiliser des guillemets simples.
Exemple:
DateTime.Now.ToString("dd'/'MM'/'yyyy");
Sauf si vous spécifiez le IFormatProvider (généralement un objet CultureInfo), il sera par défaut, utilisez du Fil.CurrentThread.CurrentCulture de la date/heure de mise en forme, qui vous donnera les résultats changent.
Et oui, il va changer /mais non :.
La solution dans ce cas est de spécifier le format du fournisseur, comme ceci:
Le caractère "/" est la culture neutre de l'espace réservé pour la date de séparateur de temps caractère de ce qui est défini dans les Paramètres Régionaux. Alors, le caractère ":" pour le moment.
Pour intégrer le "/" littéralement et non comme un espace réservé, vous devez l'entourer de guillemets simples '/' dans la chaîne de format.
C'est étrange. Que le formatage fonctionne correctement pour moi. Vous voudrez peut-être essayer _date.ToString("dd/MM/yyyy") à la place (même si c'est juste un coup de feu dans l'obscurité).
Paramètres régionaux (sur le serveur web?) ont les séparateurs de date définie à '-'. Dans mes paramètres régionaux (EE) de sortie serait "24.05.1967" 🙂
Cela vous donnera votre sortie
Sujet intéressant !
J'ai une application qui lit dans un fichier Excel, et permet à l'utilisateur d'exporter ses données .fichier csv dans un définis par l'utilisateur format.
J'ai expressément voulu donner aux utilisateurs la possibilité d'exporter les dates (exactement) un format yyyy/mm/dd, indépendamment de leur ordinateur portable info culture.
J'ai essayé un peu de ces suggestions, mais le seul qui a fait un travail était Pop Catalin de la suggestion, pour envelopper un /des personnages avec des apostrophes:
Ce qui semble être la seulement moyen de forcer ToString() de l'utilisation exacte de la chaîne de format, sans essayer de faire quelque chose de Culture spécifiques.
Mise à jour
Je trouve toujours cela amusant, lorsque je réponds à un StackOverflow question, puis frappé de la même bug quelques années plus tard, et tomber sur ma propre réponse !
Comme mentionné dans beaucoup de ces réponses, la solution consiste à envelopper barre oblique caractères entre apostrophes, à force de
ToString()
d'ignorer les paramètres de culture.Donc, si vos paramètres de Culture ont un arrêt complet de caractère comme séparateur de date de caractères (par exemple "
20.07.2015
"), alors voici ce que vous pouvez voir, en essayant de bien le format de la date, du Jour de Noël, et comment vous pouvez facilement le forcer à toujours l'utilisation de l'avant-slash: