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更好的整体性能等等。

pom引入依赖包

1 <dependency>
2 <groupId>joda-time</groupId>
3 <artifactId>joda-time</artifactId>
4 <version>2.6</version>
5 </dependency>

示例

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互操作

强大易用的日期和时间库 Joda Time的更多相关文章

  1. Joda Time - 强大易用的日期和时间库

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

  2. [Java]Java日期及时间库插件 -- Joda Time.

    来到新公司工作也有一个多月了, 陆陆续续做了一些简单的项目. 今天做一个新东西的时候发现了 Joda Time的这个东西, 因为以前用的都是JDK原生的时间处理API, 大家都知道Java原生的时间处 ...

  3. (原创)c++11中的日期和时间库

    c++11提供了日期时间相关的库chrono,通过chrono相关的库我们可以很方便的处理日期和时间.c++11还提供了字符串的宽窄转换功能,也提供了字符串和数字的相互转换的库.有了这些库提供的便利的 ...

  4. c++11之日期和时间库

    本文主要介绍 std::chrono日期和时间用法. 演示环境: vs2017 0.头文件 1 #include <chrono> 2 #include <thread>// ...

  5. PHP - 日期与时间

    第10章 日期与时间 学习要点: 1.PHP日期和时间库 使用PHP编程时,与你遇到的大多数其他类型的数据相比,日期和时间有很大不同.因为日期和时间没有明确的结构,并且日期的计算和表示也很麻烦.在PH ...

  6. php 日期和时间

    php date() 函数把时间戳格式化为更易读取的日期和时间 语法: date(formet,timestamp); 参数 描述 format 必需.规定时间戳的格式. timestamp 可选.规 ...

  7. js非常强大的日历控件fullcalendar.js, 日期时间库: moment.js

    日历控件: https://fullcalendar.io/docs/ https://fullcalendar.io/docs/event_data/events_function/ https:/ ...

  8. 10个用于处理日期和时间的 Python 库

    Python本身提供了处理时间日期的功能,也就是datetime标准库.除此之外,还有很多优秀的第三方库可以用来转换日期格式,格式化,时区转化等等.今天就给大家分享10个这样的Python库. 上期入 ...

  9. [Swift通天遁地]一、超级工具-(18)创建强大、灵活的日期时间拾取器

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

随机推荐

  1. 【bzoj2882】工艺 最小表示法

    [bzoj2882]工艺 2014年12月15日1,9020 Description 小敏和小燕是一对好朋友. 他们正在玩一种神奇的游戏,叫Minecraft. 他们现在要做一个由方块构成的长条工艺品 ...

  2. jQuery基础 浅析(含基本方法和选择器)

    1.jQuery与DOM互相转换 jQuery入库函数:$(document).ready(function(){}) $(function(){}) $(“#btn”):jQuery存储的是DOM对 ...

  3. 【HDOJ5559】Frog and String(构造)

    题意:给定n,m,k,要求构造出一个长度为n,最多使用前k个大写字母,有m个不同回文子串的字符串 1<=n,m<=1e5,1<=k<=26 思路:打表找规律 本质上是要找到不让 ...

  4. 【原创】datalist repeater 控件的行鼠标单击 以及 滑过特效

    原文发布时间为:2009-05-06 -- 来源于本人的百度文章 [由搬家工具导入] 调用方法如:<tr id="<%# Container.ItemIndex+1 %>& ...

  5. 长沙理工校赛I题题解-连续区间的最大公约数

    题目来源https://www.nowcoder.com/acm/contest/96/I 解题前们需要先知道几个结论: 首先,gcd是有区单调性的: gcd(L,R)>=gcd(L,R+d)  ...

  6. 和菜鸟一起学android4.0.3源码之lcd屏幕背光调节

    周六的中午还是依旧来了公司,本来也没有打算来的,既然来了,那就把上次遗留下来的一些问题给解决吧,把android下的pwm调lcd背光给总结下吧.关于android的背光,是用pwm波来控制的,通过占 ...

  7. nodejs递归创建目录

    var fs = require("fs"); var path = require("path"); // 递归创建目录 异步方法 function mkdi ...

  8. interview ms1 robert move **

    move 2turn rightmove 3turn rightmove 6 初始位置为(0,0),方向为north,求最后的位置. string2char:  const char* t = sec ...

  9. L1-8 外星人的一天

    L1-8 外星人的一天(15 point(s)) 地球上的一天是 24 小时.但地球上还有一些精力和勤奋度都远超一般人的大神级人物,他们的“一天”是以 48 小时为周期运转的,这种人被人们尊称为“外星 ...

  10. POJ 1961 Period KMP算法之next数组的应用

    题意:给一个长度为n的字符串,如果它长度为l(2 <= l <= n)的前缀部分是由一些相同的字符串相接而成,输出前缀的长度l和长度为l时字符串重复的最大次数. 例如字符串为: aaaba ...