官方文档

  1. <dependency>
  2. <groupId>joda-time</groupId>
  3. <artifactId>joda-time</artifactId>
  4. <version>${last.version}</version>
  5. </dependency>

当前时间

  1. // 当前时间
  2. DateTime.now();
  3. // 当前小时
  4. DateTime.now().getHourOfDay();
  5. //年
  6. DateTime.now().getYear();
  7. //月
  8. DateTime.now().getMonthOfYear();
  9. //日
  10. DateTime.now().getDayOfMonth();
  11. //星期
  12. DateTime.now().getDayOfWeek();
  13. //点
  14. DateTime.now().getHourOfDay();
  15. //分
  16. DateTime.now().getMinuteOfHour();
  17. //秒
  18. DateTime.now().getSecondOfMinute();
  19. //毫秒
  20. DateTime.now().getMillisOfSecond();

格式化

  1. String nowH = DateTime.now().toString("yyyyMMddHHmm");
  2. DateTimeFormatter yyyyMMdd= DateTimeFormat.forPattern("yyyyMMdd");
  3. DateTime dateTime = DateTime.parse("20191122", yyyyMMdd);
  4. Datedate = new Date();
  5. DateTime dateTime = new DateTime(date); datTime.toString("yyyy-MM-dd HH:mm:ss");

Date 转 DateTime

new DateTime(new Date())

获取零点

  1. DateTime currentDateTime = new DateTime();
  2. // 今天的零点
  3. DateTime dateTime = currentDateTime.withMillisOfDay(0);
  4. // 昨天的零点
  5. DateTime dateTime = currentDateTime.withMillisOfDay(0).plusDays(-1);
  6. // 明天的零点
  7. DateTime dateTime = currentDateTime.withMillisOfDay(0).plusDays(1);
  8. // 这一年最后一天0点
  9. new DateTime().dayOfYear().withMaximumValue().withMillisOfDay(0)
  10. // 这一年第一天0点
  11. new DateTime().dayOfYear().withMinimumValue().withMillisOfDay(0)
  12. // 这个月最后一天0点
  13. new DateTime().dayOfMonth().withMaximumValue().withMillisOfDay(0)
  14. // 这个月月初0点
  15. new DateTime().dayOfMonth().withMinimumValue().withMillisOfDay(0)

获取相差

  1. public static void main(String[] args) {
  2. DateTime begin = new DateTime();
  3. DateTime end = new DateTime().plusDays(2);
  4. // 相差多少年
  5. int years = Years.yearsBetween(begin, end).getYears();
  6. System.out.println("years:"+years);
  7. // 相差多少月
  8. int months = Months.monthsBetween(begin, end).getMonths();
  9. System.out.println("months:"+months);
  10. // 距离国庆放假还有多少天,嘎嘎!
  11. int days = Days.daysBetween(begin, end).getDays();
  12. System.out.println("days:"+days);
  13. // 相差多少小时
  14. int hours = Hours.hoursBetween(begin, end).getHours();
  15. System.out.println("hours:"+hours);
  16. // 相差多少分钟
  17. int minutes = Minutes.minutesBetween(begin, end).getMinutes();
  18. System.out.println("minutes:"+minutes);
  19. // 相差多少秒
  20. int seconds = Seconds.secondsBetween(begin, end).getSeconds();
  21. System.out.println();
  22. // 相差多少周
  23. int weeks = Weeks.weeksBetween(begin, end).getWeeks();
  24. System.out.println();
  25. }

日期加减

image.pngimage.png

  1. // 增加日期 天/小时/分钟/秒/周/年
  2. DateTime dateTime = DateTime.parse("2021-09-30");
  3. dateTime = dateTime.plusDays(1);
  4. dateTime = dateTime.plusHours(2);
  5. dateTime = dateTime.plusMinutes(3);
  6. dateTime = dateTime.plusMonths(4);
  7. dateTime = dateTime.plusSeconds(5);
  8. dateTime = dateTime.plusWeeks(6);
  9. dateTime = dateTime.plusYears(7);
  10. // 减少日期 毫秒/小时/秒/
  11. DateTime dateTime = DateTime.parse("2021-09-30");
  12. dateTime = dateTime.minusMillis(1);
  13. dateTime = dateTime.minusHours(1);
  14. dateTime = dateTime.minusSeconds(1);;

判断是否闰月

  1. DateTime time = new DateTime();
  2. org.joda.time.DateTime.Property month = time.monthOfYear();
  3. System.out.println("是否闰月:" + month.isLeap());

计算时间差

  1. /**
  2. * 计算时间差
  3. * @param beginTime 开始时间
  4. * @param endTime 结束时间
  5. * @param beginTimeFormat 开始时间格式
  6. * @param endTimeFormat 结束时间格式
  7. * @param returnTime 输出类型 0:天,1:小时,2:分钟,3:秒,4:毫秒
  8. */
  9. public static Long timeDifference(String beginTime, TimeFormatEnum beginTimeFormat,
  10. String endTime, TimeFormatEnum endTimeFormat,
  11. Integer returnTime) {
  12. DateTimeFormatter beginFormatter = DateTimeFormat.forPattern(beginTimeFormat.getFormat());
  13. DateTimeFormatter endTFormatter = DateTimeFormat.forPattern(endTimeFormat.getFormat());
  14. DateTime begin = DateTime.parse(beginTime, beginFormatter);
  15. DateTime end = DateTime.parse(endTime, endTFormatter);
  16. // 计算区间毫秒数
  17. Duration etime = new Duration(begin, end);
  18. switch (returnTime) {
  19. case 0:
  20. return etime.getStandardDays();
  21. case 1:
  22. return etime.getStandardHours();
  23. case 2:
  24. return etime.getStandardMinutes();
  25. case 3:
  26. return etime.getStandardSeconds();
  27. default:
  28. return etime.getMillis();
  29. }
  30. }