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. 导出带图形的数据excel表

    public static string StatisticsSR(string parmStr) { try { StatisticsSRInfo parm = JsonConvert.Deseri ...

  2. Android 学习第2课,下载 eclipse 工具

    可以到http://www.ddooo.com/softdown/61745.htm 下载下来是32位与64位都有的 而且是汉化的,经测试成功,还可以,不错!

  3. colormap

    http://cn.mathworks.com/help/matlab/ref/colormap.html

  4. Java-->打包发送信息(UDP协议)

    --> 好像UDP 协议没有TCP 协议应用得那么广泛 --> UdpSender 类定义一个发送端(快递公司) package com.dragon.java.udpdatagram; ...

  5. nginx+tomcat集群配置(4)--rewrite规则和多应用根目录设定思路

    前言: nginx中有一块很重要的概念, 就是rewrite规则. 它会对URL进行修改, 然后进行内部的重定向. rewrite授予了nginx更多的自由, 使得后级服务的接入更加地方便. 本文将简 ...

  6. jq 文字上下不间断滚动实例

    <div class="ruzhuright">                     <div class="rzcontent"> ...

  7. Shell基础-Bash变量-用户自定义变量

    变量设置规则: 变量名称可以由字母.下划线和数字组成,但是不能由数字开头. 在Bash中变量的默认类型是字符串类型,若需要进行数值运算,则需指定变量类型为数值型.变量用等号链接,且两边不能有空格.若需 ...

  8. locate无法open mlocate.db

    # locate xxxx locate: can not open () `/var/lib/mlocate/mlocate.db': No such file or directory 如果出现此 ...

  9. Postgres 9.4 feature highlight: REPLICA IDENTITY and logical replication

    Among the many things to say about logical replication features added in PostgreSQL 9.4, REPLICA IDE ...

  10. 如何设置UNIX/Linux中新创建目录或文件的默认权限

    在unix或者linux中,每创建一个文件或者目录时,这个文件或者目录都具有一个默认的权限,比如目录755,文件644,那么这些默认权限是怎么控制的呢? 答案是"umask"权限掩 ...