C# TimeOfDay TimeOnly的使用區(qū)別
在 C# 中,TimeOfDay(通常是 DateTime 的屬性,返回 TimeSpan 類型)和 TimeOnly 類型都用于表示時間,它們的比較可以通過以下方式實現(xiàn):
1. 類型轉(zhuǎn)換后比較
由于 TimeOfDay 本質(zhì)是 TimeSpan,而 TimeOnly 是獨立的時間類型,直接比較需要先統(tǒng)一類型:
方法1:將TimeOnly轉(zhuǎn)換為TimeSpan后比較
TimeOnly 提供了 ToTimeSpan() 方法,可轉(zhuǎn)換為 TimeSpan,與 TimeOfDay(TimeSpan)直接比較:
DateTime dateTime = DateTime.Now; TimeSpan timeOfDay = dateTime.TimeOfDay;?// 例如:14:30:00(TimeSpan) TimeOnly timeOnly =?new?TimeOnly(15,?0,?0);?// 15:00:00 // 轉(zhuǎn)換后比較 bool?isGreater = timeOfDay > timeOnly.ToTimeSpan();? // 結(jié)果:true(14:30 < 15:00,所以這里實際是 false,根據(jù)具體值判斷)
方法2:將TimeSpan轉(zhuǎn)換為TimeOnly后比較
通過 TimeOnly.FromTimeSpan() 方法將 TimeSpan 轉(zhuǎn)換為 TimeOnly,再比較:
DateTime dateTime = DateTime.Now; TimeSpan timeOfDay = dateTime.TimeOfDay; TimeOnly timeOnly =?new?TimeOnly(15,?0,?0); // 轉(zhuǎn)換后比較 TimeOnly timeFromSpan = TimeOnly.FromTimeSpan(timeOfDay); bool?isLess = timeFromSpan < timeOnly;? // 結(jié)果:true(如果 timeOfDay 是 14:30,則 14:30 < 15:00)
2. 直接比較時間分量
如果需要更細粒度的比較(如小時、分鐘),可以分別獲取兩者的時間分量(時、分、秒)進行比較:
DateTime dateTime = DateTime.Now;
int?hourOfDay = dateTime.Hour;
int?minuteOfDay = dateTime.Minute;
TimeOnly timeOnly =?new?TimeOnly(15,?0,?0);
// 比較小時
if?(hourOfDay > timeOnly.Hour)
{
// 邏輯...
}
// 小時相等時比較分鐘
elseif?(hourOfDay == timeOnly.Hour && minuteOfDay > timeOnly.Minute)
{
// 邏輯...
}
總結(jié)
推薦通過 類型轉(zhuǎn)換 統(tǒng)一為
TimeSpan或TimeOnly后使用比較運算符(>,<,==等),簡潔且不易出錯。TimeOnly是 .NET 6+ 引入的專門表示時間的類型,相比
TimeSpan更語義化,建議優(yōu)先使用TimeOnly.FromTimeSpan()將TimeOfDay轉(zhuǎn)換為TimeOnly后比較。
到此這篇關(guān)于C# TimeOfDay TimeOnly的使用區(qū)別的文章就介紹到這了,更多相關(guān)C# TimeOfDay TimeOnly內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 淺談C#中堆和棧的區(qū)別(附上圖解)
- c#中GetType()與Typeof()的區(qū)別
- 解析C#中[],List,Array,ArrayList的區(qū)別及應(yīng)用
- C#中sleep和wait的區(qū)別分析
- C#中FormClosing與FormClosed的區(qū)別詳細解析
- C#中IEnumerable、ICollection、IList、List之間的區(qū)別
- java與c#的語法區(qū)別詳細介紹
- C#中Action和Func的區(qū)別
- C#中 paint()與Onpaint()的區(qū)別
- C#中StringBuilder用法以及和String的區(qū)別分析
- C#中Ilist與list的區(qū)別小結(jié)
相關(guān)文章
淺析C# 使用Process調(diào)用外部程序中所遇到的參數(shù)問題
這篇文章主要介紹了C# 使用Process調(diào)用外部程序中所遇到的參數(shù)問題,需要的朋友可以參考下2017-03-03
C# 使用匿名函數(shù)解決EventHandler參數(shù)傳遞的難題
C#動態(tài)生成PictureBox并綁定右鍵菜單,實現(xiàn)刪除圖片2009-05-05

