Dagens svar kunne varieres på forskellig måde over en skabelon i stil med: "dd. MMMM yyyy g hh:mm zz" - et svar som alle deltagerne også var kommet frem til. Så koden kunne skrives noget i stil med:
var dateTime = new System.DateTime(2011, 12, 15, 17, 42, 0, DateTimeKind.Local);
string result = dateTime.ToString("dd. MMMM yyyy g hh:mm zz");
Det var dog alt, alt for simpelt for Brian Holmgård Kristensen som i stedet genererede formateringsstrengen med følgende umiddelbart ret besynderlige kode:
var dato = 15.december(2011).Kl(17.42);
Console.WriteLine(dato.ToDotHenrikString());
Da jeg så det, måtte jeg kigge en ekstra gang, gnide mig i øjnene og drikke en lille hvidtøl (samt kigge på resten af koden ;^) før pråsen gik op for mig: Extension metoder kan så sandelig misbruges - endda på fornøjeligste vis!
public static class Extensions
{
public static DateTimeOffset december(this int dag, int aar)
{
return new DateTimeOffset(new DateTime(aar, 12, dag));
}
public static DateTimeOffset Kl(this DateTimeOffset dato, double tidspunkt)
{
var time = (int) tidspunkt;
var minut = (int)((tidspunkt - time)*100);
return new DateTimeOffset(new DateTime(dato.Year, dato.Month, dato.Day, time, minut, 0 /* sekund */));
}
public static string ToDotHenrikString(this DateTimeOffset dato)
{
return dato.ToString("dd. MMMM yyyy gg hh:mm zz");
}
}
Se det er god værkstedshumor! Brian har med denne fantastiske besvarelse helt automatisk vundet en af de to præmier sponsoreret af http://www.microsoft.com/web/webmatrix/:
ASP.NET bogen går til: Brian Holmgård Kristensen
Pluralsight abonnementet går til: Allan Agerholm Dahl, Ringsted