.NET?6新特性試用之DateOnly和TimeOnly類型
前言:
在.NET 6之前,沒有方法來直接表示沒有時(shí)間的日期(比如生日)或者沒有日期的一天中的時(shí)間(比如鬧鐘)。
雖然我們可以使用DateTime類和TimeSpan類來代替,但是實(shí)際使用中會(huì)存在一些問題:
var dateOnly = new DateTime(2021, 10, 1); //輸出 2021/10/1 0:00:00 //問題:還是有時(shí)間,并不能代表0點(diǎn)出生 var timeOnly = new TimeSpan(11, 22, 0).Add(TimeSpan.FromHours(24)); //輸出 1.11:22:00 //問題:過了24小時(shí),應(yīng)該還是當(dāng)前時(shí)間,實(shí)際帶了天數(shù)
因此,.Net 6引入了DateOnly和TimeOnly結(jié)構(gòu),可以存儲(chǔ)日期和時(shí)間
舉例
?1.創(chuàng)建實(shí)例?
我們可以直接創(chuàng)建DateOnly或者TimeOnly的實(shí)例:
var dateOnly = new DateOnly(2021, 10, 1); //輸出 10/1/2021 var timeOnly = new TimeOnly(11, 22, 0); //輸出 11:22 AM
還可以使用??FromDateTime??方法從DateTime實(shí)例中生成:
var datetime = new DateTime(2021, 10, 1, 10, 1, 0); var dateOnly = DateOnly.FromDateTime(datetime); var timeOnly = TimeOnly.FromDateTime(datetime);
還可以使用??FromTimeSpan??方法從TimeSpan實(shí)例中生成TimeOnly:
var timeSpan = new TimeSpan(11, 22, 0); ? var timeOnly = TimeOnly.FromTimeSpan(timeSpan);
?2.類型轉(zhuǎn)換?
反之,可以使用??ToDateTime??方法將DateOnly實(shí)例轉(zhuǎn)換成DateTime:
var dateOnly = new DateOnly(2021, 10, 1); var timeOnly = new TimeOnly(11, 22, 0); var datetime = dateOnly.ToDateTime(timeOnly); //輸出 10/1/2021 11:22:00 AM
可以看到,必須同時(shí)帶上TimeOnly實(shí)例才能轉(zhuǎn)換。
也可以使用??ToTimeSpan??方法將TimeOnly實(shí)例轉(zhuǎn)換成TimeSpan:
var timeOnly = new TimeOnly(11, 22, 0); var timeSpan = timeOnly.ToTimeSpan(); //輸出 11:22:00
?3.操作?
DateOnly和TimeOnly類型還提供了比較運(yùn)算符(例如??<???和??>???)和??AddXXX??方法進(jìn)行操作:
var noon = new TimeOnly(12, 0);
if (now < noon)
{
? ? //早上
? ? ...
}
dateOnly = dateOnly.AddDays(7);
timeOnly = timeOnly.AddHours(24);需要注意的是:僅僅TimeOnly類型支持??-??運(yùn)算符,獲得TimeSpan時(shí)間間隔。
結(jié)論:
?DateOnly和TimeOnly的引入并不意味著DateTime將不再有用,只是將它們用在不同場景。
到此這篇關(guān)于.NET 6新特性試用之DateOnly和TimeOnly類型的文章就介紹到這了,更多相關(guān)DateOnly和TimeOnly類型內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
.net 讀取非標(biāo)準(zhǔn)配置文件的小例子
這篇文章介紹了.net 讀取非標(biāo)準(zhǔn)配置文件的小例子,有需要的朋友可以參考一下2013-07-07
異步 HttpContext.Current實(shí)現(xiàn)取值的方法(解決異步Application,Session,Cache.
在一個(gè)項(xiàng)目中,為了系統(tǒng)執(zhí)行效率更快,把一個(gè)經(jīng)常用到的數(shù)據(jù)庫表通過dataset放到Application中,發(fā)現(xiàn)在異步實(shí)現(xiàn)中每一次都會(huì)出現(xiàn)HttpContext.Current為null的異常,后來在網(wǎng)上查了好多資料,發(fā)現(xiàn)問這個(gè)問題的人多,回答的少2009-07-07
Asp.NET 隨機(jī)碼生成基類(隨機(jī)字母,隨機(jī)數(shù)字,隨機(jī)字母+數(shù)字)
對于需要用asp.net 字母,隨機(jī)數(shù)字,隨機(jī)字母+數(shù)字生成隨機(jī)碼的朋友用的到2008-11-11
.NET?Core項(xiàng)目使用swagger開發(fā)組件
這篇文章介紹了.NET?Core項(xiàng)目使用swagger開發(fā)組件的方法,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07
ASP.NET技巧:做個(gè)DataList可分頁的數(shù)據(jù)源
ASP.NET技巧:做個(gè)DataList可分頁的數(shù)據(jù)源...2006-09-09
asp.net下UTF-7轉(zhuǎn)GB2312編碼的代碼(中文)
UTF-7轉(zhuǎn)換GB2312編碼的方法2010-07-07
DataTable轉(zhuǎn)成字符串復(fù)制到txt文本的小例子
DataTable轉(zhuǎn)成字符串復(fù)制到txt文本的小例子,需要的朋友可以參考一下2013-03-03

