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
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.
DateTime.Now
meerdere keren op deze manier aanroept. AlsDateTime.Now.Month
wordt aangeroepen vóór middernacht van 31 januari enDateTime.Now.Day
na middernacht, krijgt u de datum zoals20120101
. Het ' is onwaarschijnlijk, maar zeker mogelijk.