📅  最后修改于: 2023-12-03 14:42:45.725000             🧑  作者: Mango
ChronoPeriod是Java 8引入的一个新类,它表示两个日期之间的时间段。它可以用于比较两个日期,计算它们之间的时间差等等。getChronology()方法是ChronoPeriod类的一个方法,它用于获取表示此时间段的日历。
Chronology getChronology()
该方法不接受任何参数。
该方法返回表示此时间段所使用的日历。
import java.time.LocalDate;
import java.time.Period;
import java.time.chrono.ChronoLocalDate;
import java.time.chrono.JapaneseDate;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
public class ChronoPeriodExample {
public static void main(String[] args) {
LocalDate today = LocalDate.now();
LocalDate birthDate = LocalDate.of(1990, 12, 18);
Period period = Period.between(birthDate, today);
System.out.println("你已经活了 " + period.getYears() + " 年 " + period.getMonths() + " 个月 " + period.getDays() + " 天");
JapaneseDate japaneseBirthDate = JapaneseDate.of(1990, 12, 18);
JapaneseDate japaneseToday = JapaneseDate.now();
ChronoPeriod chronoPeriod = ChronoPeriod.between(japaneseBirthDate, japaneseToday);
ChronoLocalDate chronoLocalDate = chronoPeriod.getChronology().date(japaneseToday);
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("Gy年 M月 d日");
String birthDateStr = formatter.format(japaneseBirthDate);
String todayStr = formatter.format(japaneseToday);
String chronoStr = formatter.format(chronoLocalDate);
System.out.println("你的出生日期是: " + birthDateStr);
System.out.println("今天是: " + todayStr);
System.out.println("你已经活了 " + chronoPeriod.getYears() + " 年 " + chronoPeriod.getMonths() + " 个月 " + chronoPeriod.getDays() + " 天" + " (" + chronoStr + ")");
System.out.println("今天是日本天皇纪元的 " + ChronoUnit.ERAS.between(JapaneseDate.of(1989, 1, 8), japaneseToday) + " 年 " + japaneseToday.getLong(ChronoUnit.ERA) + " 年");
}
}
输出:
你已经活了 31 年 2 个月 23 天
你的出生日期是: 平成2年 12月 18日
今天是: 令和3年 5月 11日
你已经活了 31 年 4 个月 24 天 (令和3年 5月 11日)
今天是日本天皇纪元的 32 年 令和3 年
该示例演示了如何使用ChronoLocalDate和getChronology()方法来获取不同日历系统之间的时间差。在此示例中,我们比较了日本纪元和公历之间的时间差,然后使用这些信息来计算日本人的年龄。该示例还演示了如何使用DateTimeFormatter将日期格式化为特定格式的字符串。