运维开发网

试用新功能的DateOnly和TimeOnly类型

运维开发网 https://www.qedev.com 2022-07-13 19:57 出处:网络
这篇文章主要介绍了.NET6新特性试用之DateOnly和TimeOnly类型,主要介绍DateOnly和TimeOnly类型使用过程及存在的一些过程,需要的小伙伴可以参考一下

这篇文章主要介绍了.NET6新特性试用之DateOnly和TimeOnly类型,主要介绍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小时,应该还是当前时间,实际带了天数

因此,。Net 6引入了DateOnly和TimeOnly结构,可以存储日期和时间。


举例


1.创建实例

我们可以直接创建DateOnly或TimeOnly的实例:

var dateOnly = new DateOnly(2021, 10, 1);//输出10/1/2021var 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类型还提供比较运算符(例如,lt;和gt;)和AddXXX方法:

var noon = new TimeOnly(12, 0);if (now lt; noon){ //早上 ...}dateOnly = dateOnly.AddDays(7);timeOnly = timeOnly.AddHours(24);

应该注意,只有TimeOnly类型支持-运算符来获取TimeSpan时间间隔。


结论:

DateOnly和TimeOnly的引入并不意味着DateTime将不再有用,只是在不同的场景下使用它们而已。

这就是本文中关于DateOnly和TimeOnly的新功能的试用版。NET 6。有关DateOnly和TimeOnly的更多信息

0

精彩评论

暂无评论...
验证码 换一张
取 消