.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.類型轉換?
反之,可以使用??ToDateTime??方法將DateOnly實例轉換成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
實例才能轉換。
也可以使用??ToTimeSpan??方法將TimeOnly實例轉換成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ù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Repeater事件OnItemCommand取得行內(nèi)控件的方法
這篇文章主要介紹了Repeater事件OnItemCommand取得行內(nèi)控件的方法,有需要的朋友可以參考一下2014-01-01ASP.Net使用System.Security.Principal模擬用戶
這篇文章介紹了ASP.Net使用System.Security.Principal模擬用戶的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-05-05一步步打造簡單的MVC電商網(wǎng)站BooksStore(4)
這篇文章主要和大家一起一步步打造一個簡單的MVC電商網(wǎng)站,MVC電商網(wǎng)站BooksStore第四篇,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-04-04ASP.NET筆記之 ListView 與 DropDownList的使用
本篇文章小編為大家介紹,ASP.NET筆記之 ListView 與 DropDownList的使用。需要的朋友參考下2013-04-04ASP.NET中防止頁面刷新造成表單重復提交執(zhí)行兩次操作
本文主要介紹在Session存儲唯一標識Token,通過和后臺對比,以實現(xiàn)防止刷新提交表單的問題。2016-04-04Repeater控件數(shù)據(jù)導出Excel(附演示動畫)
本文我們實現(xiàn)為Repeater控件數(shù)據(jù)導出Excel的功能,附動畫演示,感興趣的朋友可以了解下2013-01-01