📌  相关文章
📜  Java中的 ChronoPeriod getChronology() 方法及示例(1)

📅  最后修改于: 2023-12-03 14:42:45.725000             🧑  作者: Mango

Java中的 ChronoPeriod getChronology() 方法及示例

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将日期格式化为特定格式的字符串。