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

