Formatowanie ciągu daty i godziny w formacie RRRRMMDD

Pracuję z dziwnymi interfejsami API, które wymagają wysyłania dat w formacie RRRRMMDD.

Myślałem o zrobieniu czegoś takiego:

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

Czy jest lepsza praktyka?

Komentarze

  • Zachowaj ostrożność, dzwoniąc do DateTime.Now kilka razy w ten sposób. Na przykład, jeśli DateTime.Now.Month nazywa się po prostu przed północą 31 stycznia i DateTime.Now.Day po północy otrzymasz datę, taką jak 20120101. ' jest mało prawdopodobne, ale na pewno możliwe.
  • To już ' odpowiedział ', ale Główną różnicą między ich metodą a Twoją jest sposób obsługi jednocyfrowych miesięcy i dat. Twój wydrukowałby rok 201911 na 1 stycznia 2019 r., podczas gdy inni wydrukowaliby 20190101

Odpowiedź

Tak, jest: Formatowanie daty

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

Odpowiedź

Inną opcją byłoby utworzenie metod rozszerzających, takich jak:

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

Używałbyś go w następujący sposób:

var dateString = DateTime.Now.ToYMD(); 

Zaimplementowane rozszerzenie działa również dla wartości DateTime dopuszczalnych wartości Nullable.

Jeśli wykonujesz dużo pracy z wartościami DateTime sformatowanymi jako „rrrrMMdd”, metoda rozszerzenia ma tę zaletę, że wymaga mniej wpisywania.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *