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
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.
DateTime.Now
flere gange som denne. Hvis f.eks.DateTime.Now.Month
bare kaldes inden midnat den 31. januar ogDateTime.Now.Day
efter midnat får du datoen som20120101
. Den ' er usandsynligt, men bestemt muligt.