Formatage dune chaîne datetime au format AAAAMMJJ

Je « travaille avec des API étranges qui nécessitent lenvoi des dates au format AAAAMMJJ.

Je pensais faire quelque chose comme ceci:

string date = string.Concat(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day); 

Y a-t-il une meilleure pratique?

Commentaires

  • Soyez prudent lorsque vous appelez DateTime.Now plusieurs fois comme ceci. Par exemple, si DateTime.Now.Month est simplement appelé avant minuit du 31 janvier et DateTime.Now.Day après minuit, vous obtiendrez la date comme 20120101. Elle ' est peu probable, mais certainement possible.
  • Cest déjà ' répondu ', mais le La principale différence entre leur méthode et la vôtre est la façon dont les mois et les dates à 1 chiffre seront traités. La vôtre imprimerait 201911 pour le 1er janvier 2019, tandis que les autres imprimeraient 20190101

Réponse

Oui, il y a: Formatage de la date

var dateString = DateTime.Now.ToString("yyyyMMdd"); 

Réponse

Une autre option serait de créer une extension des méthodes comme:

public static class DateTimeExtensions { public static string ToYMD(this DateTime theDate) { return theDate.ToString("yyyyMMdd"); } public static string ToYMD(this DateTime? theDate) { return theDate.HasValue ? theDate.Value.ToYMD() : string.Empty; } } 

Vous lutiliseriez comme:

var dateString = DateTime.Now.ToYMD(); 

Lextension implémentée fonctionne également pour les valeurs Nullable DateTime.

Si vous travaillez beaucoup avec ces valeurs DateTime formatées « aaaaMMjj », la méthode dextension a lavantage de moins de saisie.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *