Apa cara tercepat dan termudah untuk mendapatkan nilai Min (atau Maks) antara dua tanggal? Apakah ada yang setara dengan Math.Min (& Math.Max) untuk tanggal?
Saya ingin melakukan sesuatu seperti:
if (Math.Min(Date1, Date2) < MINIMUM_ALLOWED_DATE) {
//not allowed to do this
}
Jelas Matematika di atas. Tidak berfungsi karena mereka berkencan.
System.DateTime
-instance asliTidak ada metode bawaan untuk melakukan itu. Anda dapat menggunakan ungkapan:
untuk menemukan maksimum keduanya.
Anda dapat menulis metode generik untuk menghitung
Min
atauMax
untuk jenis apa pun (asalkanComparer<T>.Default
diatur dengan tepat):Anda dapat menggunakan LINQ juga:
sumber
Bagaimana tentang:
Bekerja dengan semua jenis yang mendukung
IComparable<T>
atauIComparable
.Sebenarnya, dengan LINQ, alternatif lain adalah:
sumber
Ini memungkinkan tanggal untuk memiliki 'jenis' yang berbeda dan mengembalikan instance yang disahkan (tidak mengembalikan DateTime baru yang dibuat dari Kutu atau Milidetik).
Perhatikan bahwa tes ini akan gagal di Timur Greenwich ...
sumber
Linq.Min()
/Linq.Max()
pendekatan:sumber
Jika Anda ingin menyebutnya lebih seperti Math.Max, Anda dapat melakukan sesuatu seperti badan ekspresi yang sangat singkat ini:
sumber
Bagaimana dengan
DateTime
metode ekstensi?Pemakaian:
sumber
DateTime.MaxOf(dt1, dt2)
, tapi saya tidak tahu bagaimana melakukan itu ...Sekarang kita memiliki LINQ, Anda dapat membuat array dengan dua nilai Anda (DateTimes, TimeSpans, apa pun) dan kemudian menggunakan metode ekstensi .Max ().
Bunyinya bagus, seefisien Max, dan dapat digunakan kembali untuk lebih dari 2 nilai perbandingan.
Seluruh masalah di bawah ini mengkhawatirkan .Ind adalah masalah besar ... tapi saya menghindarinya dengan tidak pernah bekerja di waktu lokal, selamanya. Jika saya memiliki sesuatu yang penting mengenai waktu, saya selalu bekerja di UTC, walaupun itu berarti lebih banyak pekerjaan untuk sampai di sana.
sumber
http://jsfiddle.net/5CR37/
sumber