Jag arbetar med några konstiga API: er som kräver att datumen skickas i YYYYMMDD-format.
Jag tänkte göra något liknande:
string date = string.Concat(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day);
Finns det bättre praxis?
Kommentarer
Svar
Ja det finns: Datumformatering
var dateString = DateTime.Now.ToString("yyyyMMdd");
Svar
Ett annat alternativ skulle vara att skapa tilläggsmetoder 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 skulle kunna använda det som:
var dateString = DateTime.Now.ToYMD();
Det implementerade tillägget fungerar också för värden som inte kan slutas.
Om du gör mycket arbete med dessa ”yyyyMMdd” -formaterade DateTime-värden har förlängningsmetoden fördelen med mindre skrivning.
DateTime.Now
flera gånger så här. Om till exempelDateTime.Now.Month
bara heter före midnatt den 31 januari ochDateTime.Now.Day
efter midnatt får du datumet som20120101
. Det ' är osannolikt, men säkert möjligt.