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

http://joda-time.sourceforge.net/

版本:joda-time-2.1.jar

1、时间类得作成

  1. //方法一:取系统点间
  2. DateTime dt1 = new DateTime();
  3. //方法二:通过java.util.Date对象生成
  4. DateTime dt2 = new DateTime(new Date());
  5. //方法三:指定年月日点分秒生成(参数依次是:年,月,日,时,分,秒,毫秒)
  6. DateTime dt3 = new DateTime(2012, 5, 20, 13, 14, 0, 0);
  7. //方法四:ISO8601形式生成
  8. DateTime dt4 = new DateTime("2012-05-20");
  9. DateTime dt5 = new DateTime("2012-05-20T13:14:00");
  10. //只需要年月日的时候
  11. LocalDate localDate = new LocalDate(2009, 9, 6);// September 6, 2009
  12. //只需要时分秒毫秒的时候
  13. LocalTime localTime = new LocalTime(13, 30, 26, 0);// 1:30:26PM

2、获取年月日点分秒

  1. DateTime dt = new DateTime();
  2. //年
  3. int year = dt.getYear();
  4. //月
  5. int month = dt.getMonthOfYear();
  6. //日
  7. int day = dt.getDayOfMonth();
  8. //星期
  9. int week = dt.getDayOfWeek();
  10. //点
  11. int hour = dt.getHourOfDay();
  12. //分
  13. int min = dt.getMinuteOfHour();
  14. //秒
  15. int sec = dt.getSecondOfMinute();
  16. //毫秒
  17. int msec = dt.getMillisOfSecond();

3、星期的特殊处理

  1. DateTime dt = new DateTime();
  2. //星期
  3. switch(dt.getDayOfWeek()) {
  4. case DateTimeConstants.SUNDAY:
  5. System.out.println("星期日");
  6. break;
  7. case DateTimeConstants.MONDAY:
  8. System.out.println("星期一");
  9. break;
  10. case DateTimeConstants.TUESDAY:
  11. System.out.println("星期二");
  12. break;
  13. case DateTimeConstants.WEDNESDAY:
  14. System.out.println("星期三");
  15. break;
  16. case DateTimeConstants.THURSDAY:
  17. System.out.println("星期四");
  18. break;
  19. case DateTimeConstants.FRIDAY:
  20. System.out.println("星期五");
  21. break;
  22. case DateTimeConstants.SATURDAY:
  23. System.out.println("星期六");
  24. break;
  25. }

4、与JDK日期对象的转换

  1. DateTime dt = new DateTime();
  2. //转换成java.util.Date对象
  3. Date d1 = new Date(dt.getMillis());
  4. Date d2 = dt.toDate();
  5. //转换成java.util.Calendar对象
  6. Calendar c1 = Calendar.getInstance();
  7. c1.setTimeInMillis(dt.getMillis());
  8. Calendar c2 = dt.toCalendar(Locale.getDefault());

5、日期前后推算

  1. DateTime dt = new DateTime();
  2. //昨天
  3. DateTime yesterday = dt.minusDays(1);
  4. //明天
  5. DateTime tomorrow = dt.plusDays(1);
  6. //1个月前
  7. DateTime before1month = dt.minusMonths(1);
  8. //3个月后
  9. DateTime after3month = dt.plusMonths(3);
  10. //2年前
  11. DateTime before2year = dt.minusYears(2);
  12. //5年后
  13. DateTime after5year = dt.plusYears(5);

6、取特殊日期

  1. DateTime dt = new DateTime();
  2. //月末日期
  3. DateTime lastday = dt.dayOfMonth().withMaximumValue();
  4. //90天后那周的周一
  5. DateTime firstday = dt.plusDays(90).dayOfWeek().withMinimumValue();

7、时区

  1. //默认设置为日本时间
  2. DateTimeZone.setDefault(DateTimeZone.forID("Asia/Tokyo"));
  3. DateTime dt1 = new DateTime();
  4. //伦敦时间
  5. DateTime dt2 = new DateTime(DateTimeZone.forID("Europe/London"));

8、计算区间

  1. DateTime begin = new DateTime("2012-02-01");
  2. DateTime end = new DateTime("2012-05-01");
  3. //计算区间毫秒数
  4. Duration d = new Duration(begin, end);
  5. long time = d.getMillis();
  6. //计算区间天数
  7. Period p = new Period(begin, end, PeriodType.days());
  8. int days = p.getDays();
  9. //计算特定日期是否在该区间内
  10. Interval i = new Interval(begin, end);
  11. boolean contained = i.contains(new DateTime("2012-03-01"));

9、日期比较

  1. DateTime d1 = new DateTime("2012-02-01");
  2. DateTime d2 = new DateTime("2012-05-01");
  3. //和系统时间比
  4. boolean b1 = d1.isAfterNow();
  5. boolean b2 = d1.isBeforeNow();
  6. boolean b3 = d1.isEqualNow();
  7. //和其他日期比
  8. boolean f1 = d1.isAfter(d2);
  9. boolean f2 = d1.isBefore(d2);
  10. boolean f3 = d1.isEqual(d2);

10、格式化输出

    1. DateTime dateTime = new DateTime();
    2. String s1 = dateTime.toString("yyyy/MM/dd hh:mm:ss.SSSa");
    3. String s2 = dateTime.toString("yyyy-MM-dd HH:mm:ss");
    4. String s3 = dateTime.toString("EEEE dd MMMM, yyyy HH:mm:ssa");
    5. String s4 = dateTime.toString("yyyy/MM/dd HH:mm ZZZZ");
    6. String s5 = dateTime.toString("yyyy/MM/dd HH:mm Z");

【转】Java日期计算之Joda-Time的更多相关文章

  1. Java日期计算之Joda-Time

    http://rensanning.iteye.com/blog/1546652 Joda-Time提供了一组Java类包用于处理包括ISO8601标准在内的date和time.可以利用它把JDK D ...

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

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

  3. JAVA中日期转换和日期计算的方法

    日期的格式有很多形式,在使用过程中经常需要转换,下面是各种类型转换的使用例子以及日期计算方法的例子. 一.不同格式日期相互转换方法 public class TestDateConvertUtil { ...

  4. CCF201509-2 日期计算 java(100分)

    试题编号: 201509-2 试题名称: 日期计算 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 给定一个年份y和一个整数d,问这一年的第d天是几月几日? 注意闰年的2月有2 ...

  5. Java日期时间API系列21-----Jdk8中java.time包中的新的日期时间API类,xk-time时间转换,计算,格式化,解析的工具

    通过工作之余,对Java8中java.time包源码的不断学习,使用和总结,开发了xk-time,初步完成,欢迎试用和提出建议! xk-time xk-time is a datetime conve ...

  6. Java实现 蓝桥杯 算法提高 日期计算

    算法提高 日期计算 时间限制:1.0s 内存限制:256.0MB 问题描述 已知2011年11月11日是星期五,问YYYY年MM月DD日是星期几?注意考虑闰年的情况.尤其是逢百年不闰,逢400年闰的情 ...

  7. 编写Java程序随机输入日期计算星期几,打印任意一年的日历

    需求说明: 随机输入日期计算星期几,打印任意一年的日历 已知,1900年1月1日是星期1,用户随机输入年月日,计算星期几 实现思路: 一.知道1900年1月1日为星期一,求输入的年份月份与1900年1 ...

  8. JAVA中计算两个日期时间的差值竟然也有这么多门道

    上半年春招的时候,作为面试官,对于面试表现的不错的同学会要求其写一小段代码看看.题目很简单: 给定一个日期,然后计算下距离今天相差的天数. 本以为这么个问题就是用来活跃面试氛围的,但是结果却让人大跌眼 ...

  9. java日期比较,日期计算

    版权声明:本文为楼主原创文章,未经楼主允许不得转载,如要转载请注明来源. 都是常用的日期之间的比较方法,供以后参考. 热身:获取当前时间 SimpleDateFormat df = new Simpl ...

随机推荐

  1. js窗口边缘滑入滑出效果-初级代码

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  2. asp.net 前台通过Eval()绑定动态显示样式

    1.a标签链接 <%#Eval("ConfigCode").ToString().ToLower() == "publishtext" ? "& ...

  3. C++ Primer : 第十四章 : 重载运算与类型转换之重载运算符

    重载前须知 重载运算符是特殊的函数,它们的名字由operator和其后要重载的运算符号共同组成. 因为重载运算符时函数, 因此它包含返回值.参数列表和函数体. 对于重载运算符是成员函数时, 它的第一个 ...

  4. Spring源码学习之:@async 方法上添加该注解实现异步调用的原理

    在我们使用spring框架的过程中,在很多时候我们会使用@async注解来异步执行某一些方法,提高系统的执行效率.今天我们来探讨下 spring 是如何完成这个功能的.    spring 在扫描be ...

  5. 解决android 启动白屏问题

    Android 启动APP时黑屏白屏的三个解决方案 http://www.cnblogs.com/liqw/p/4263418.html android:windowSoftInputMode属性使用 ...

  6. cookie,session,sessionid

    cookie,session,sessionid http协议是无状态的,意思是每次请求的状态不会保存.因此,产生了cookie,session之类保存会话状态的机制.1.什么是cookiecooki ...

  7. 北京VR视频外包团队:全景VR视频科普

    近期很多用户资讯问关于全景视频,这里动点给大家介绍一下: 首先,全景360VR视频(全景视频使用VR设备控制)是一种特殊的视频形式,与普通视频的最大区别就是,全景视频的每一帧都是涵盖360度空间场景信 ...

  8. Android学习笔记(八)

    android中常见空间的使用方法 1.TextView TextView主要用于在界面上显示一段文本信息,如下面代码所示: <LinearLayout xmlns:android=" ...

  9. MapReduce、Hbase接口API实践

    读取hdfs中文件并做处理,取出卡号,通过卡号连接hbase查询出对应客户号,写入redis,因为不用输出,所以不调用context.write方法,整个操作在一个map中便可完成 protected ...

  10. Catalan数(数论)

    Catalan数 [参考网址]http://www.cnblogs.com/gongxijun/p/3232682.html 记得当时我们队写过一个,差点超时,现在找到了公式,感觉还是挺简单的. 还要 ...