.NET?6新特性試用之DateOnly和TimeOnly類型
前言:
在.NET 6之前,沒(méi)有方法來(lái)直接表示沒(méi)有時(shí)間的日期(比如生日)或者沒(méi)有日期的一天中的時(shí)間(比如鬧鐘)。
雖然我們可以使用DateTime類和TimeSpan類來(lái)代替,但是實(shí)際使用中會(huì)存在一些問(wèn)題:
var dateOnly = new DateTime(2021, 10, 1); //輸出 2021/10/1 0:00:00 //問(wèn)題:還是有時(shí)間,并不能代表0點(diǎn)出生 var timeOnly = new TimeSpan(11, 22, 0).Add(TimeSpan.FromHours(24)); //輸出 1.11:22:00 //問(wèn)題:過(guò)了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將不再有用,只是將它們用在不同場(chǎng)景。
到此這篇關(guān)于.NET 6新特性試用之DateOnly和TimeOnly類型的文章就介紹到這了,更多相關(guān)DateOnly和TimeOnly類型內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Repeater事件OnItemCommand取得行內(nèi)控件的方法
這篇文章主要介紹了Repeater事件OnItemCommand取得行內(nèi)控件的方法,有需要的朋友可以參考一下2014-01-01ASP.Net使用System.Security.Principal模擬用戶
這篇文章介紹了ASP.Net使用System.Security.Principal模擬用戶的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-05-05一步步打造簡(jiǎn)單的MVC電商網(wǎng)站BooksStore(4)
這篇文章主要和大家一起一步步打造一個(gè)簡(jiǎn)單的MVC電商網(wǎng)站,MVC電商網(wǎng)站BooksStore第四篇,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-04-04ASP.NET筆記之 ListView 與 DropDownList的使用
本篇文章小編為大家介紹,ASP.NET筆記之 ListView 與 DropDownList的使用。需要的朋友參考下2013-04-04ASP.NET中防止頁(yè)面刷新造成表單重復(fù)提交執(zhí)行兩次操作
本文主要介紹在Session存儲(chǔ)唯一標(biāo)識(shí)Token,通過(guò)和后臺(tái)對(duì)比,以實(shí)現(xiàn)防止刷新提交表單的問(wèn)題。2016-04-04Entity Framework Core更新時(shí)間映射
這篇文章介紹了Entity Framework Core更新時(shí)間映射的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-03-03Repeater控件數(shù)據(jù)導(dǎo)出Excel(附演示動(dòng)畫)
本文我們實(shí)現(xiàn)為Repeater控件數(shù)據(jù)導(dǎo)出Excel的功能,附動(dòng)畫演示,感興趣的朋友可以了解下2013-01-01