public static class DateTool
{
public static DateTime Min(DateTime x, DateTime y)
{
return (x.ToUniversalTime() < y.ToUniversalTime()) ? x : y;
}
public static DateTime Max(DateTime x, DateTime y)
{
return (x.ToUniversalTime() > y.ToUniversalTime()) ? x : y;
}
}
Pozwala to terminy mają różne „rodzaje” i zwraca instancję, która została uchwalona w (nie wraca nowy DateTime wykonaną z Kleszcze lub milisekundy).
[TestMethod()]
public void MinTest2()
{
DateTime x = new DateTime(2001, 1, 1, 1, 1, 2, DateTimeKind.Utc);
DateTime y = new DateTime(2001, 1, 1, 1, 1, 1, DateTimeKind.Local);
//Presumes Local TimeZone adjustment to UTC > 0
DateTime actual = DateTool.Min(x, y);
Assert.AreEqual(x, actual);
}
Zauważ, że ten test nie powiedzie się na wschód od Greenwich ...
wydawało mi się to najbliższe jednoliniowemu zamiennikowi/odpowiednikowi dla Math.Min, ale inne odpowiedzi też były świetne, dla kompletności – hawbsl
-, całkowicie tracisz wszystkie informacje (z wyjątkiem tyknięć) oryginalnego 'System.DateTime' -instance –
@AndreasNiedermair: Jedyne informacje, które istnieją w wartości 'DateTime', to własności' Ticks' i 'Kind'. Wszystkie pozostałe właściwości pochodzą od nich. – Guffa