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. React Native的组件ListView

    React Native的组件ListView类似于iOS中的UITableView和UICollectionView,也就是说React Native的组件ListView既可以实现UITableV ...

  2. 纯js轮播效果(减速效果)待改进

    HTML代码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www. ...

  3. php:上传多个文件

    <?php class upload {    public $files;    public $seterror;    public $allowtype;    public $file ...

  4. Git 问题

    You are not currently on a branch, so I cannot use any 症状:有一次pull的时候又出现冲突,这回用“git reset --hard FETCH ...

  5. bash的操作环境[转]

          Bash Shell 的操作环境: 是否记得我们登陆主机的时候,屏幕上头会有一些说明文字,告知我们的 Linux 版本啊什么的, 还有,登陆的时候我们还可以给予用户一些信息或者欢迎文字呢. ...

  6. (转)CVPR 2016 Visual Tracking Paper Review

    CVPR 2016 Visual Tracking Paper Review  本文摘自:http://blog.csdn.net/ben_ben_niao/article/details/52072 ...

  7. [redis] redis.clients.jedis.exceptions.JedisDataException: MOVED 13102 127.0.0.1

    这个异常上网查了很久才知道原因: MOVED indicates that you're using Redis Cluster. ShardedJedis is not for Redis Clus ...

  8. <mvc:annotation-driven/>与<mvc:default-servlet-handler/>之间的一个问题

    <mvc:annotation-driven/>与<mvc:default-servlet-handler/>之间的一个问题 在做项目的时候,我希望静态资源由WEB服务器默认的 ...

  9. TIOBE Index for November 2015(转载)

    原文地址:http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html November Headline: Java once a ...

  10. ruby 查询mysql方法

    首先对需要使用的数据库进行封装,便于使用:数据库表封装源码: mysqlapi.rb #业务涉及的数据库的配置ActiveRecord::Base$db1={:adapter => " ...