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
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.
DateTime.Now
kilka razy w ten sposób. Na przykład, jeśliDateTime.Now.Month
nazywa się po prostu przed północą 31 stycznia iDateTime.Now.Day
po północy otrzymasz datę, taką jak20120101
. ' jest mało prawdopodobne, ale na pewno możliwe.