Een datetime-string opmaken in de JJJJMMDD-indeling

Ik werk met een aantal vreemde APIs waarvoor de datums moeten worden verzonden in de JJJJMMDD-indeling.

Ik dacht erover om zoiets als dit te doen:

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

Is er een betere methode?

Opmerkingen

  • Wees voorzichtig wanneer u DateTime.Now meerdere keren op deze manier aanroept. Als DateTime.Now.Month wordt aangeroepen vóór middernacht van 31 januari en DateTime.Now.Day na middernacht, krijgt u de datum zoals 20120101. Het ' is onwaarschijnlijk, maar zeker mogelijk.
  • Dit is al ' beantwoord ', maar de Het belangrijkste verschil tussen hun methode en die van jou is hoe omgegaan wordt met maanden en datums van 1 cijfer. De jouwe zou 201911 afdrukken voor 1 januari 2019, terwijl de anderen 20190101 afdrukken

Antwoord

Ja, er is: Datumnotatie

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

Answer

Een andere optie zou zijn om een uitbreidingsmethode te maken zoals:

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

Je zou het gebruiken als:

var dateString = DateTime.Now.ToYMD(); 

De geïmplementeerde extensie werkt ook voor Nullable DateTime-waarden.

Als u veel werk doet met deze “jjjjMMdd” opgemaakte DateTime-waarden, heeft de extensiemethode het voordeel dat u minder hoeft te typen.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *