.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小时,应该还是当前时间,实际带了天数

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

Demo

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类型还提供了比较运算符(例如<>)和AddXXX方法进行操作:

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

需要注意的是,仅仅TimeOnly类型支持-运算符,获得TimeSpan时间间隔。

结论

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

如果你觉得这篇文章对你有所启发,请帮忙点个或者在看

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/294715.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

用wordpress制作网站的总结

在没有自己的网站的时候很像拥有一个属于自己的网站&#xff0c;可以说是自己的一个愿望吧。但是当我真正的运行起来了之后觉得没有多么的兴奋&#xff0c;自己也折腾了几天wordpress,从买域名空间&#xff0c;到安装WP&#xff0c;遇到了一些问题&#xff0c;自己到处搜索答案…

解析super-smack的smack文件

Super-smack是一款强大的数据库压测工具&#xff0c;现在支持mysql和PostgreSQL两种数据库&#xff0c;你可以通过简单的配置文件(.smack)来生成一系列测试环境&#xff1a;测试数据&#xff0c;测试表&#xff1b;在测试的过程中&#xff0c;你可以控制客户端的并发数量以及执…

JSP是不是Java发展史上的一大败笔?

JSP一个年代传奇人物&#xff0c;它的诞生成果了网络的三国鼎立的局势&#xff0c;可是&#xff0c;几年的结构的风烟席卷&#xff0c;让JSP逐渐淡出这个前史舞台&#xff0c;有人不由宣布这样的感叹&#xff0c;JSP是不是Java开展史上的一大败笔呢&#xff1f; 查询样本 让咱们…

Android之使用PopupWindow使用和总结

不废话,先爆照 说明: 那个灰色背景是不能滑动里ListView里面的内容的 第一步:我们需要背景view 下面是我的background.xml文件 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/t…

Cell发文!施一公科研团队取得重大突破

全世界只有3.14 % 的人关注了爆炸吧知识本文来源&#xff1a;科学网&#xff08;有删减&#xff09;北京时间2020年12月29日凌晨0时&#xff0c;《细胞》&#xff08;Cell&#xff09;发表中科院院士、西湖大学校长施一公课题组的一项新研究。研究首次报道了γ-分泌酶&#xff…

MAUI 跨平台播客应用程序(Conf 2021)

介绍在.NET Conf 2021大会上&#xff0c;微软展示了基于.NET6 跨平台应用程序, 具有ASP.NET Core、Blazor、.NET MAUI、微服务等功能。浏览由 ASP.NET Core 和 Blazor 提供支持的 .NET Podcasts 应用的实时运行版本&#xff1a;https://dotnetpodcasts.azurewebsites.net/项目体…

mysql enum_MySQL数据库中关于ENUM类型的详细解释

MySQL数据库中&#xff0c;因为工作的需求&#xff0c;我们可能会用到ENUM类型&#xff0c;但是由于此类型不是很常用&#xff0c;我们可能对其也不是很了解。没关系&#xff0c;本文我们就对ENUM类型做一些详细的解释&#xff0c;希望能够对您有所帮助。ENUM类型是一个字符串对…

Linux系统新手学习的11点建议

随着Linux应用的扩展许多朋友开始接触Linux&#xff0c;根据学习Windwos的经验往往有一些茫然的感觉&#xff1a;不知从何处开始学起。这里介绍学习Linux的一些建议。 一、从基础开始&#xff1a;常常有些朋友在Linux论坛问一些问题&#xff0c;不过&#xff0c;其中大多数的问…

Android之如何实现通讯录的搜索并且让匹配到的数据变颜色

不废话,先爆照 第一步:实现搜索 已经实现了通讯录功能,但是需要搜索,可以支持中文名字搜索,写入电话号码搜索,还有名字拼音,以及名字第一个字的首字母来搜索,这里介绍名字搜索,然后数据是我们公司TCL(020)所有员工的信息,目前还没有写到后…

复习一下日志等级类型

linux操作系统的日志有多种信息等级类型&#xff0c;今天好好复习一下&#xff1a; 1、info&#xff1a;信息说明&#xff1b; 2、notice&#xff1a;较info更需注意的信息&#xff1b; 3、warning&#xff08;warn&#xff09;&#xff1a;和现实生活中的warning不同&#xff…

mysql映射超_Hibernate的映射类型 hibernate mysql映射类型

(转)http://blog.csdn.net/zxy_snow/article/details/7214222Hibernate的映射类型 hibernate mysql映射类型1、Hibernate的映射类型 hibernate mysql映射类型Hibernate 映射类型Java 类型标准 SQL 类型大小和取值范围integer 或者 intint 或者 java.lang.IntegerINTEGER4 字节l…

dotnet 将自动代码格式化机器人带入团队 GitLab 平台

给团队带入一个 代码格式化机器人 能提升团队的幸福度&#xff0c;让团队的成员安心写代码&#xff0c;不用关注代码格式化问题&#xff0c;将格式代码这个粗活交给机器人去做。同时也能减少在代码审查里撕格式化问题的时间&#xff0c;让更多的时间投入到更有价值的工作上本文…

Notion,我来,语雀,有道等几个云笔记

最近打算放弃wolai产品的使用&#xff0c;所以有必要总结一下这些年用过的那些笔记。从最早开始用Evernote&#xff0c;然后麦库&#xff0c;为知&#xff0c;然后有道&#xff0c;onenote&#xff0c;一直到Notion&#xff0c;我来&#xff0c;语雀等等&#xff0c;都有各自的…

玩转Javascript 给JS写测试

给js写测试已经不是什么稀奇的事情了&#xff0c;最近项目里用了jasmine和JsTestDriver两种js测试框架。JsTestDriver易于与持续构建系统相集成并能够在多个浏览器上运行测试轻松实现TDD风格的开发。当在项目中配置好JsTestDriver以后&#xff0c;如同junit测试java文件一般&am…

Android 之自定义view实现水波纹效果

在实际的开发中&#xff0c;很多时候还会遇到相对比较复杂的需求&#xff0c;比如产品妹纸或UI妹纸在哪看了个让人兴奋的效果&#xff0c;兴致高昂的来找你&#xff0c;看了之后目的很明确&#xff0c;当然就是希望你能给她&#xff1b; 在这样的关键时候&#xff0c;身子板就一…

FFLIb Demo CQRS

使用FFLIB 构建了一个demo&#xff0c;该demo模拟了一个常见的游戏后台架构&#xff0c;该demo主要有一下亮点&#xff1a; FFLIB 实现进程间通信非常方便基于CQRS 思想构建LogicServer使用Event Publish/Subscribe&#xff0c; 实现各个模块的解耦合基于Event 实现实体对象的单…

【自定义标签开发】01-标签简介和开发第一个标签

自定义标签简介自定义标签主要用于移除Jsp页面中的java代码。要使用自定义标签移除jsp页面中的java代码&#xff0c;只需要完成以下两个步骤:1.编写一个实现Tag接口的java类&#xff0c;把页面java代码移到这个java类中(标签处理器类)。2.编写标签库描述(tld)文件&#xff0c;在…

三联《少年》创刊,各领域佼佼者畅言新知,帮少年建立思维素养体系!

▲点击查看很多中国小孩的成长是断层的。10岁前被视作可爱稚子&#xff0c;被大人护着走&#xff1b;18岁猛然被定义为成年人&#xff0c;要选择大学、专业&#xff0c;开始面对感情。中间的人生呢&#xff1f;“你是个学生&#xff0c;学习是本职&#xff0c;现在谈什么人生&a…

mysql utf8 bin设置_[mysql]修改collation为utf8_bin

mysql默认字段值区分大小写&#xff1a;character-set-serverutf8collation-serverutf8_bininit-connectSET NAMES utf8;SELECT DEFAULT_CHARACTER_SET_NAME charset, DEFAULT_COLLATION_NAME collationFROM information_schema.SCHEMATA WHERE SCHEMA_NAME billing01;SELECT …

C# WPF MVVM开发框架Caliburn.Micro自定义引导程序④

01—自定义引导程序在上一部分中&#xff0c;我们讨论了Caliburn.Micro WPF应用程序的最基本配置&#xff0c;并演示了与操作和约定相关的两个简单功能。在这一部分中&#xff0c;我想进一步探讨Bootstrapper类。让我们首先将应用程序配置为使用IoC容器。本例中我们将使用内置容…