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;
}
}
Điều này cho phép ngày để có 'loại' khác nhau và trả về trường hợp đó đã được thông qua (không trả lại một DateTime mới được xây dựng từ Ticks hoặc mili giây).
[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);
}
Lưu ý rằng thử nghiệm này sẽ thất bại Đông Greenwich ...
Điều này dường như với tôi là gần nhất với một thay thế một dòng/tương đương cho Math.Min nhưng các câu trả lời khác cũng tuyệt vời, để hoàn thành – hawbsl
-, bạn hoàn toàn mất tất cả thông tin (ngoại trừ các dấu tích) của 'System.DateTime' gốc -instance –
@AndreasNiedermair: Thông tin duy nhất tồn tại trong giá trị 'DateTime' là thuộc tính' Ticks' và 'Kind'. Tất cả các thuộc tính khác đều bắt nguồn từ những thuộc tính đó. – Guffa