首页 > 其他分享 >每日一课:强大易用的日期和时间类库Joda-Time

每日一课:强大易用的日期和时间类库Joda-Time

时间:2023-06-04 13:02:08浏览次数:37  
标签:类库 Joda dateTime Time new Calendar DateTime 2012


实战Docker到Kubernetes技术系列视频:

                https://pan.baidu.com/s/1qYWsYIg

获取回复:d2k

         Joda-Time提供了一组Java类包用于处理包括ISO8601标准在内的date和time。可以利用它把JDK Date和Calendar类完全替换掉,而且仍然能够提供很好的集成。

 

Joda-Time主要的特点包括:

 

1. 易于使用:Calendar让获取"正常的"的日期变得很困难,使它没办法提供简单的方法,而Joda-Time能够 直接进行访问域并且索引值1就是代表January。

 

2. 易于扩展:JDK支持多日历系统是通过Calendar的子类来实现,这样就显示的非常笨重而且事实 上要实现其它日历系统是很困难的。Joda-Time支持多日历系统是通过基于Chronology类的插件体系来实现。

3. 提供一组完整的功能:它打算提供 所有关系到date-time计算的功能.Joda-Time当前支持8种日历系统,而且在将来还会继续添加,有着比JDK Calendar更好的整体性能等等。

1、创建任意时间对象

//jdk  
Calendar calendar=Calendar.getInstance();  
calendar.set(2012, Calendar.NOVEMBER, 15, 18, 23,55);  
  
//Joda-time  
DateTime dateTime=new DateTime(2012, 12, 15, 18, 23,55);

2、计算两日期相差的天数

//jdk  
Calendar start = Calendar.getInstance();   
start.set(2012, Calendar.NOVEMBER, 14);  
  
Calendar end = Calendar.getInstance();  
end.set(2012, Calendar.NOVEMBER, 15);  
  
long startTim = start.getTimeInMillis();  
long endTim = end.getTimeInMillis();  
long diff = endTim-startTim;  
int days=(int) (diff/1000 / 3600 / 24);  
 
//joda-time  
LocalDate start=new LocalDate(2012, 12,14);  
LocalDate end=new LocalDate(2012, 12, 15);  
int days = Days.daysBetween(start, end).getDays();

3、获取18天之后的某天在下个月的当前周的第一天日期

//jdk  
Calendar current = Calendar.getInstance();  
current.add(Calendar.DAY_OF_MONTH, 18);  
current.add(Calendar.MONTH, 1);  
     ......  
DateFormat dateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
Date date = current.getTime();  
String dateStr = dateFormat.format(date);  
System.out.println(dateStr);  
  
//joda-time  
String dateStr = new DateTime().plusDays(18).plusMonths(1)  
    .dayOfWeek().withMinimumValue().toString("yyyy-MM-dd HH:mm:ss");  
System.out.println(dateStr);

 

4、时间格式化

DateTimeFormatter format = DateTimeFormat .forPattern("yyyy-MM-dd HH:mm:ss");  
  
        //时间解析  
        DateTime dateTime = DateTime.parse("2012-12-21 23:22:45", format);  
          
        //时间格式化,输出==> 2012/12/21 23:22:45 Fri  
        String string_u = dateTime.toString("yyyy/MM/dd HH:mm:ss EE");  
        System.out.println(string_u);  
          
        //格式化带Locale,输出==> 2012年12月21日 23:22:45 星期五  
        String string_c = dateTime.toString("yyyy年MM月dd日 HH:mm:ss EE",Locale.CHINESE);  
        System.out.println(string_c);

 

5、与JDK互操作

//通过jdk时间对象构造  
Date date = new Date();  
DateTime dateTime = new DateTime(date);  
  
Calendar calendar = Calendar.getInstance();  
dateTime = new DateTime(calendar);  
  
// Joda-time 各种操作.....  
dateTime = dateTime.plusDays(1) // 增加天  
                    .plusYears(1)// 增加年  
                    .plusMonths(1)// 增加月  
                    .plusWeeks(1)// 增加星期  
                    .minusMillis(1)// 减分钟  
                    .minusHours(1)// 减小时  
                    .minusSeconds(1);// 减秒数  
                      
// 计算完转换成jdk 对象  
Date date2 = dateTime.toDate();  
Calendar calendar2 = dateTime.toCalendar(Locale.CHINA);

看完本文有收获?请转发分享给更多人


欢迎关注“JAVA乐园”,我们分享最有价值的互联网技术干货文章,助力您成为有思想的全栈架构师,我们只聊互联网、只聊架构!打造最有价值的架构师圈子和社区。

  • 长按下方的二维码可以快速关注我们

每日一课:强大易用的日期和时间类库Joda-Time_人工智能

标签:类库,Joda,dateTime,Time,new,Calendar,DateTime,2012
From: https://blog.51cto.com/u_13538361/6410437

相关文章

  • Flink实战(七) - Time & Windows编程
    掌握Flink中三种常用的Time处理方式,掌握Flink中滚动窗口以及滑动窗口的使用,了解Flink中的watermark。Flink在流处理工程中支持不同的时间概念。1处理时间(Processingtime)执行相应算子操作的机器的系统时间。当流程序在处理时间运行时,所有基于时间的算子操作(如时间窗口)将使用运行相......
  • Python time 模块
    常用#float整数位为秒time.time()#struct_timetime.localtime()#stringtime.ctime()#stringtime.asctime()转换#struct_timetime.localtime(float)#floattime.mktime(struct_time)#struct_timetime.strptime(string,"%Y-%m-%d%H:%M:%S")#......
  • Flink中的Window和Time详解
    Window(窗口)Flink认为批处理是流处理的一个特例,所以Flink底层引擎是一个流式引擎,在上面实现了流处理和批处理。而Window就是从流处理到批处理的一个桥梁。通常来讲,Window是一种可以把无界数据切割为有界数据块的手段例如,对流中的所有元素进行计数是不可能的,因为通......
  • Python 标准类库-因特网数据处理之Base64数据编码
    该模块提供将二进制数据编码为可打印ASCII字符并将这种编码解码回二进制数据的功能。它为RFC3548中指定的编码提供编码和解码功能。定义了Base16、Base32和Base64算法,以及事实上的标准Ascii85和Base85编码。RFC3548编码适用于对二进制数据进行编码,以便可以安全地通过电子邮件发......
  • c# winfrom中 dateTimePicker 控件设置自动获取上个月,当月,下个月,前好几个月,后好几个月
    我这里用的是vs2022开发,将获取的时间赋值给dateTimePicker控件进行筛选1、从工具箱中托取一个dateTimePicker控件,我这里将该控件命名为RQ,代码为RQ.value=时间代码2、时间的获取:今天:RQ.Value=DateTime.Now;本月第一天:RQ.Value=DateTime.Now.AddDays(1-DateTime.Now.Day......
  • 黑屏real time clock error,bios设置系统时间
    打开笔记本,突然出现这样的黑屏信息 按一下F1,出现这样的界面,将选项栏转到第三项Date/Time  转到第三项之后,可以看到系统时间,将系统时间手动修改成现在的时间+ 修改完成后按F10,弹出一个对话框,选择yes,系统会自动关机......
  • python使用cx_Oracle连接timesten
    环境:OS:WindowsDB:18.1  1.配置环境变量TNS_ADMIN=C:\TimesTen\tt181_64\network\admin 2.创建tnsnames.ora文件在timesten安装目录下C:\TimesTen\tt181_64\network\admin\samples拷贝一个tnsnames.ora到C:\TimesTen\tt181_64\network\admin进行修改 3.修改tnsnames......
  • 传奇Hero引擎报错is not a valid date and time怎么解决?
    isnotavaliddateandtime翻译成中文的意思为不是有效的时间格式,当引擎启动时会提示如下造成这种原因并不是引擎本身有什么问题,而是我们之前使用了其它的引擎,使!setup.txt下的DayOfGuildFountain=2017-12-16 13:58:02,时间格式改变了引擎官方给出的格式是:HH:mm:ss短日期格式:y......
  • pytorch 训练 RuntimeError Unable to find a valid cuDNN algorithm to run convolut
    pytorch训练RuntimeError:UnabletofindavalidcuDNNalgorithmtorunconvolutionpytorch训练RuntimeError:UnabletofindavalidcuDNNalgorithmtorunconvolution#问题描述:python:3.95pytorch:1.10.2pythontrain.py--img640--batch64--epochs600--da......
  • 安装timesten(18.1.4)
    环境:OS:Centos7DB:18.1.4 1.下载软件包地址地址:https://edelivery.oracle.com/osdc/faces/SoftwareDelivery我这里下载的是V1035435-01.zip 2.解压到相应目录我这里是解压后迁移到/opt/目录[root@localhostcc]#unzipV1035435-01.zip[root@localhostcc]#unziptimes......