Formatering av en datetime-streng i ÅÅÅÅMMDD-format

Jeg jobber med noen rare API-er som krever at datoene sendes i ÅÅÅÅMMDD-format.

Jeg tenkte å gjøre noe slikt:

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

Finnes det bedre praksis?

Kommentarer

  • Vær forsiktig når du ringer til DateTime.Now flere ganger som dette. For eksempel hvis DateTime.Now.Month bare heter før midnatt 31. januar og DateTime.Now.Day etter midnatt, får du datoen som 20120101. Det ' er usannsynlig, men absolutt mulig.
  • Dette er allerede ' svarte ', men hovedforskjellen mellom metoden og din er hvordan 1-sifrede måneder og datoer vil bli håndtert. Din vil skrive ut 201911 for 1. januar 2019, mens de andre vil skrive ut 20190101

Svar

Ja det er: Datoformatering

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

Svar

Et annet alternativ vil være å lage utvidelsesmetoder som:

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; } } 

Du vil bruke den slik:

var dateString = DateTime.Now.ToYMD(); 

Den implementerte utvidelsen fungerer også for Nullable DateTime-verdier.

Hvis du gjør mye arbeid med disse «yyyyMMdd» -formaterte DateTime-verdiene, har utvidelsesmetoden fordelen av mindre å skrive.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *