Formatera en datetime-sträng i YYYYMMDD-format

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

  • Var försiktig när du ringer till DateTime.Now flera gånger så här. Om till exempel DateTime.Now.Month bara heter före midnatt den 31 januari och DateTime.Now.Day efter midnatt får du datumet som 20120101. Det ' är osannolikt, men säkert möjligt.
  • Detta är redan ' svarat ', men Huvudskillnaden mellan deras metod och din är hur 1-siffriga månader och datum kommer att hanteras. Din skulle skriva ut 201911 för 1 januari 2019, medan de andra kommer att skriva ut 20190101

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.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *