首先说我们为什么要使用 Joda?
Joda-Time 令时间和日期值变得易于管理、操作和理解。事实上,易于使用是 Joda 的主要设计目标。其他目标包括可扩展性、完整的特性集以及对多种日历系统的支持。并且 Joda 与 JDK 是百分之百可互操作的,因此您无需替换所有 Java 代码,只需要替换执行日期/时间计算的那部分代码。
Joda-Time提供了一组Java类包用于处理包括ISO8601标准在内的date和time。可以利用它把JDK Date和Calendar类完全替换掉,而且仍然能够提供很好的集成。
Joda-Time官网:https://www.joda.org/joda-time/
//LocalDate 只关注年月日
LocalDate localDate = LocalDate.now();
System.out.println(localDate);
//localDate.get...
System.out.println(localDate.getYear()+"年"+localDate.getMonthValue()+"月"+localDate.getDayOfMonth()+"日");
System.out.println("------------------------");
//通过LocalDate.of()构造日期
LocalDate localDate1 = LocalDate.of(2019, 3, 2);
System.out.println(localDate1);
System.out.println("-------------------------");
LocalDate localDate2 = LocalDate.of(2018, 5, 20);
//通过MonthDay 只获取月份和日
MonthDay monthDay = MonthDay.of(localDate2.getMonthValue(), localDate2.getDayOfMonth());
MonthDay monthDay1 = MonthDay.from(LocalDate.of(2019,5,20));
if(monthDay.equals(monthDay1)){
System.out.println("equals");
}else {
System.out.println("not equals");
}
System.out.println("------------------------");
// LocalTime 只关注时分秒
LocalTime localTime = LocalTime.now();
System.out.println(localTime);
//指定增加/减少小时分钟等的数值
LocalTime localTime1 = localTime.plusHours(1).plusMinutes(12);
System.out.println(localTime1);
//当前日期
LocalDate localDate4 = LocalDate.now();
System.out.println(localDate);
//两周后
LocalDate localDate3 = localDate4.plus(2, ChronoUnit.WEEKS);
System.out.println(localDate3);
System.out.println("----------------------");
LocalDate localDate5 = localDate4.minus(2, ChronoUnit.MONTHS);
System.out.println(localDate5);
System.out.println("------------------------");
//比较两个日期的前后关系
LocalDate localDate6 = LocalDate.now();
LocalDate localDate7 = LocalDate.of(2019, 3, 15);
System.out.println(localDate6.isAfter(localDate7));
System.out.println(localDate6.isBefore(localDate7));
System.out.println(localDate6.equals(localDate7));
System.out.println("------------------------");
//打印所有时区
Set<String> set = ZoneId.getAvailableZoneIds();
Set<String> treeSet = new TreeSet<String>(){
{
addAll(set);
}
};
// treeSet.stream().forEach(System.out::println);
System.out.println("------------------------");
ZoneId zoneId = ZoneId.of("Asia/Shanghai");
LocalDateTime localDateTime = LocalDateTime.now();
System.out.println(localDateTime);
ZonedDateTime zonedDateTime = ZonedDateTime.of(localDateTime, zoneId);
System.out.println(zonedDateTime);
System.out.println("------------------------");
//通过YearMonth 只获取年份和月份
YearMonth yearMonth = YearMonth.now();
System.out.println(yearMonth);
System.out.println(yearMonth.lengthOfMonth());
System.out.println(yearMonth.isLeapYear());
YearMonth yearMonth1 = YearMonth.of(2020, 2);
System.out.println(yearMonth);
//是闰年嘛
System.out.println(yearMonth1.isLeapYear());
//一年多少天
System.out.println(yearMonth1.lengthOfYear());
System.out.println(yearMonth1.lengthOfMonth());
System.out.println("------------------------");
LocalDate localDate8 = LocalDate.now();
LocalDate localDate9 = LocalDate.of(2018, 10, 10);
//时期间隔
Period period = Period.between(localDate9, localDate8);
//间隔年数
System.out.println(period.getYears());
//间隔多少月
System.out.println(period.getMonths());
//间隔多少天
System.out.println(period.getDays());