首页 > 其他分享 >核心(Hutool-core)日期时间对象-DateTime

核心(Hutool-core)日期时间对象-DateTime

时间:2024-07-31 15:06:13浏览次数:7  
标签:core 对象 Hutool dateTime offset new 2017 DateTime

由来
考虑工具类的局限性,在某些情况下使用并不简便,于是DateTime类诞生。DateTime对象充分吸取Joda-Time库的优点,并提供更多的便捷方法,这样我们在开发时不必再单独导入Joda-Time库便可以享受简单快速的日期时间处理过程。

DateTime类继承于java.util.Date类,为Date类扩展了众多简便方法,这些方法多是DateUtil静态方法的对象表现形式,使用DateTime对象可以完全替代开发中Date对象的使用。

使用

新建对象

DateTime对象包含众多的构造方法,构造方法支持的参数有:

Date
Calendar
String(日期字符串,第二个参数是日期格式)
long 毫秒数
构建对象有两种方式:DateTime.of()和new DateTime():

Date date = new Date();

//new方式创建
DateTime time = new DateTime(date);
Console.log(time);

//of方式创建
DateTime dt = DateTime.of(date);
DateTime now = DateTime.now();

使用对象

DateTime的成员方法与DateUtil中的静态方法所对应,因为是成员方法,因此可以使用更少的参数操作日期时间。

示例:获取日期成员(年、月、日等)

DateTime dateTime = new DateTime("2017-01-05 12:34:23", DatePattern.NORM_DATETIME_FORMAT);

//年,结果:2017
int year = dateTime.year();

//季度(非季节),结果:Season.SPRING
Season season = dateTime.seasonEnum();

//月份,结果:Month.JANUARY
Month month = dateTime.monthEnum();

//日,结果:5
int day = dateTime.dayOfMonth();
更多成员方法请参阅API文档。

对象的可变性

DateTime对象默认是可变对象(调用offset、setField、setTime方法默认变更自身),但是这种可变性有时候会引起很多问题(例如多个地方共用DateTime对象)。我们可以调用setMutable(false)方法使其变为不可变对象。在不可变模式下,offset、setField方法返回一个新对象,setTime方法抛出异常。

DateTime dateTime = new DateTime("2017-01-05 12:34:23", DatePattern.NORM_DATETIME_FORMAT);

//默认情况下DateTime为可变对象,此时offset == dateTime
DateTime offset = dateTime.offset(DateField.YEAR, 0);

//设置为不可变对象后变动将返回新对象,此时offset != dateTime
dateTime.setMutable(false);
offset = dateTime.offset(DateField.YEAR, 0);

格式化为字符串

调用toString()方法即可返回格式为yyyy-MM-dd HH:mm:ss的字符串,调用toString(String format)可以返回指定格式的字符串。

DateTime dateTime = new DateTime("2017-01-05 12:34:23", DatePattern.NORM_DATETIME_FORMAT);
//结果:2017-01-05 12:34:23
String dateStr = dateTime.toString();

//结果:2017/01/05
String dateStr = dateTime.toString("yyyy/MM/dd");

标签:core,对象,Hutool,dateTime,offset,new,2017,DateTime
From: https://www.cnblogs.com/velloLei/p/18334690

相关文章

  • .net core 依赖注入 DependencyInjection
    .netcore依赖注入源码位于.netcore的runtime源码中,其他源码信息 .netcore独立模块源码:https://github.com/aspnet.netcore全家桶源码:https://github.com/dotnet/aspnetcore.netcore拓展库源码:https://github.com/dotnet/extensions.netcore标准库源码:https://github......
  • 充血模型的EFCore实现
    充血模型的五个需求属性是只读的或者只能被类内部的代码修改。publicPhoneNumberPhoneNumber{get;privateset;}publicvoidChangePassword(stringpassword){if(password.Length<=3){thrownewArgumentOutOfRangeException("密码长度需......
  • 核心(Hutool-core)日期时间工具-DateUtil
    转换Date、long、Calendar之间的相互转换//当前时间Datedate=DateUtil.date();//当前时间Datedate2=DateUtil.date(Calendar.getInstance());//当前时间Datedate3=DateUtil.date(System.currentTimeMillis());//当前时间字符串,格式:yyyy-MM-ddHH:mm:ssStringno......
  • 核心(Hutool-core)克隆工具cn.hutool.clone.CloneSupport
    一、直接继承extendsCloneSupport这个类就完事了/**狗狗类,用于继承CloneSupport类@authorLooly*/privatestaticclassDogextendsCloneSupport{privateStringname="wangwang";privateintage=3;}当然,使用CloneSupport的前提是你没有继承任何的类,谁让Java......
  • 核心(Hutool-core)类型转换Convert类
    Java常见类型转换转换为字符串:inta=1;//aStr为"1"StringaStr=Convert.toStr(a);long[]b={1,2,3,4,5};//bStr为:"[1,2,3,4,5]"StringbStr=Convert.toStr(b);转换为指定类型数组:String[]b={"1","2","3","4&q......
  • linux+jenkins+github+.net core CI/CD 快速部署
    目标:代码提交后,在jenkins点击build,编译通过后能让linux更新.netcore文件和重新运行 步骤:1.腾讯云搞一台免费linux服务器:https://cloud.tencent.com/2.服务上安装jenkinshttps://www.jenkins.io/doc/book/installing/linux/#red-hat-centos3.腾讯云防火墙开放8080端口,另一......
  • [rCore学习笔记 019]在main中测试本章实现
    写在前面本随笔是非常菜的菜鸡写的。如有问题请及时提出。可以联系:[email protected]:https://github.com/WindDevil(目前啥也没有批处理操作系统的启动和运行流程要想把本章实现的那些模块全部都串联在一起以实现运行一个批处理操作系统,回顾本章内容,思考批处理操作......
  • DatetimeFormatter字符串转日期
    在Java中,我们经常需要将字符串形式的日期时间转换为LocalDateTime、LocalDate、LocalTime等日期时间对象,或者将日期时间对象转换为字符串。为了完成这些操作,我们可以使用DateTimeFormatter类。1.导入必要的类首先,确保你已经导入了必要的类:importjava.time.LocalDateTime;......
  • ASP.NET Core中上传文件
    1.创建一个文件上传的表单在一个视图中(比如Index.cshtml),添加一个表单来让用户选择文件并上传。@modelIFormFile<formmethod="post"enctype="multipart/form-data"><divclass="form-group"><labelfor="file">选择文件</......
  • 如何使用我的 CoreML 模型在 Vision 中获取 MLMultiArray 输出
    我正在尝试在swift中将我的CoreMl模型与Vision框架结合使用。我的模型输出一个MLMultiArray。当我通过Vision运行它时,我确实得到了一个输出,但是输出的类型是VNObservation,我无法使用它,也无法将其转换为MLMultiArray。有谁知道如何获取MLMultiArray作为输出,或将VNOb......