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

Jeg arbejder med nogle mærkelige APIer, der kræver, at datoerne sendes i formatet ÅÅÅÅMMDD.

Jeg tænkte på at gøre noget som dette:

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

Er der en bedre praksis?

Kommentarer

  • Vær forsigtig, når du ringer til DateTime.Now flere gange som denne. Hvis f.eks. DateTime.Now.Month bare kaldes inden midnat den 31. januar og DateTime.Now.Day efter midnat får du datoen som 20120101. Den ' er usandsynligt, men bestemt muligt.
  • Dette er allerede ' besvaret ', men den væsentligste forskel mellem deres metode og din er, hvordan 1 cifrede måneder og datoer håndteres. Din vil udskrive 201911 til 1. januar 2019, mens de andre vil udskrive 20190101

Svar

Ja der er: Datoformatering

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

Svar

En anden mulighed ville være at oprette en udvidelsesmetode 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 bruge det som:

var dateString = DateTime.Now.ToYMD(); 

Den implementerede udvidelse fungerer også for Nullable DateTime-værdier.

Hvis du laver meget arbejde med disse “yyyyMMdd” -formaterede DateTime-værdier, har udvidelsesmetoden fordelen ved mindre at skrive.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *