L'obtention de la journée de suffixe lors de l'utilisation de DateTime.ToString()
Est-il possible d'inclure le jour suffixe lors du formatage d'une date à l'aide DateTime.ToString()?
Pour exemple, j'aimerais imprimer la date dans le format suivant - lundi 27 juillet 2009. Cependant, l'exemple le plus proche que je peux trouver à l'aide de DateTime.ToString() est le lundi 27 juillet 2009.
Puis-je faire cela avec DateTime.ToString() ou vais-je avoir à revenir à mon propre code?
- Quelqu'un a dit NodaTime?
- Pour info, "le[date] préfixe" est ce qu'ils sont appelés. "Jour" se réfère généralement à lundi-dimanche
Vous devez vous connecter pour publier un commentaire.
Comme une référence, j'ai toujours utiliser/se référer à SteveX Mise En Forme De Chaîne
et il ne semble pas y avoir de "th" dans les variables disponibles mais vous pouvez facilement créer une chaîne avec
Vous devrez fournir un "st" 1, "nd" pour 2, "rd" pour 3, et "e" pour tous les autres et peut être doublée avec un "? :" instruction.
DateTime.Now
est extrait plusieurs fois dans la même expression, les valeurs peuvent être différentes si le code est exécuté aux environs de minuit.Une autre option à l'aide de l'interrupteur:
À l'aide d'un couple de méthodes d'extension:
Utilisation:
Remarque: L'entier de la méthode d'extension peut être utilisé pour n'importe quel nombre, et pas seulement de 1 à 31. par exemple,
useExtendedSpecifiers
booléen :pUne autre option est d'utiliser le Opérateur Modulo:
Vous serait alors appeler la méthode ci-dessus en passant-dans un DateTime objet en tant que paramètre, par exemple:
Pour plus d'informations sur le DateTime constructeur, veuillez consulter Microsoft Docs Page.
var suffix = CreateDateSuffix(new DateTime(2013, 10, 8));
renvoie '8' dans mon cas?Ici est la version étendue y compris les 11e, 12e et 13e:
("dd")
serait de produire, d'utiliserstring.PadLeft()
Prenant @Lazlow, la réponse à une solution complète, ce qui suit est entièrement réutilisable méthode d'extension, avec un exemple d'utilisation;
À utiliser cela il vous suffit de l'appeler sur un
DateTime
objet;Qui vous donnera:
Mise à JOUR
NuGet package:
https://www.nuget.org/packages/DateTimeToStringWithSuffix
Exemple:
https://dotnetfiddle.net/zXQX7y
Prend en charge:
.NET Core 1.0 et supérieur
.NET Framework 4.5 et haute
Voici une méthode d'extension (car tout le monde aime les méthodes d'extension), avec Lazlow la réponse de la base (repris Lazlow est comme il est facile à lire).
Fonctionne exactement comme la régulière
ToString()
méthode surDateTime
à l'exception que si le format contient und
oudd
, puis le suffixe sera ajouté automatiquement.Je pense que c'est une bonne solution, couvrant les numéros tels que 111e etc:
Je l'ai fait comme ça, ça permet de contourner certains problèmes donnés dans les autres exemples.
Un bon marché et gai de VB solution:
Pour ce que sa vaut le coup, voici ma solution finale à l'aide de la ci-dessous les réponses
public static String SuffixDate(DateTime date)
{
chaîne ordinal;
D'Obtenir La Date De Suffixe. (Fonction Statique)
Référence: https://www.aspsnippets.com/Articles/Display-st-nd-rd-and-th-suffix-after-day-numbers-in-Formatted-Dates-using-C-and-VBNet.aspx
Pour ceux qui sont heureux d'utiliser les dépendances externes (dans ce cas, le fantastique Humanizr .net), c'est aussi simple que
dateVar.Day.Ordinalize(); \\ 1st, 4th etc depending on the value of dateVar
dans la documentation MSDN il n'y a aucune référence à une culture qui pourrait convertir que 17 à 17. si Vous devez le faire manuellement via le code-behind.Ou en construire un...vous pourriez construire une fonction qui le fait.
Une autre option à l'aide de la dernière chaîne de caractères:
1th
,2th
, et3th
.