Java ThaiBuddhistChronology 类
最后修改时间:2025 年 4 月 16 日
java.time.chrono.ThaiBuddhistChronology
类实现了泰国佛教日历系统。 这个历法主要在泰国使用。 它是一个阳历,年份从佛陀诞生之日起计算。
在泰国佛教日历中,公元 2025 年对应佛历 2568 年 (BE)。 该日历与 ISO 日历共享相同的月份和日期结构,但在年份编号上有所不同。
ThaiBuddhistChronology 类概述
ThaiBuddhistChronology
提供了根据泰国佛教日历创建日期和时间的方法。 它实现了 Chronology
接口,并遵循与其他历法实现相同的模式。
public final class ThaiBuddhistChronology extends AbstractChronology { public static ThaiBuddhistChronology INSTANCE; public static ThaiBuddhistDate now(); public static ThaiBuddhistDate now(ZoneId zone); public static ThaiBuddhistDate of(int prolepticYear, int month, int dayOfMonth); public static ThaiBuddhistDate from(TemporalAccessor temporal); public static ThaiBuddhistDate dateEpochDay(long epochDay); public int prolepticYear(Era era, int yearOfEra); public ThaiBuddhistEra eraOf(int eraValue); public List<Era> eras(); }
上面的代码显示了 ThaiBuddhistChronology
提供的关键方法。 这些方法允许在泰国佛教日历中创建和转换日期。 该历法遵循与其他 Java 时间类相同的模式。
创建 ThaiBuddhistDate 对象
泰国佛教日期可以通过多种方式创建。 最常见的方法是使用 now
获取当前日期,以及使用工厂方法获取特定日期。 也支持从 ISO 日期的转换。
package com.zetcode; import java.time.chrono.ThaiBuddhistDate; import java.time.LocalDate; import java.time.ZoneId; public class Main { public static void main(String[] args) { // Current date ThaiBuddhistDate now = ThaiBuddhistDate.now(); System.out.println("Current Thai date: " + now); // Specific date ThaiBuddhistDate date = ThaiBuddhistDate.of(2568, 4, 16); System.out.println("Specific Thai date: " + date); // From ISO date ThaiBuddhistDate fromIso = ThaiBuddhistDate.from(LocalDate.now()); System.out.println("From ISO date: " + fromIso); // With timezone ThaiBuddhistDate zoned = ThaiBuddhistDate.now(ZoneId.of("Asia/Bangkok")); System.out.println("In Bangkok: " + zoned); } }
此示例演示了创建 ThaiBuddhistDate 对象的不同方法。 输出显示了泰国佛教格式的日期。 年份比 ISO 日历年提前 543 年。
在日历之间转换
可以在泰国佛教日历和 ISO 日历之间转换日期。 当与使用不同日历系统的系统一起工作时,这很有用。
package com.zetcode; import java.time.chrono.ThaiBuddhistDate; import java.time.LocalDate; public class Main { public static void main(String[] args) { ThaiBuddhistDate thaiDate = ThaiBuddhistDate.now(); System.out.println("Thai Buddhist date: " + thaiDate); // Convert to ISO LocalDate isoDate = LocalDate.from(thaiDate); System.out.println("ISO date: " + isoDate); // Convert back to Thai ThaiBuddhistDate backToThai = ThaiBuddhistDate.from(isoDate); System.out.println("Back to Thai: " + backToThai); // Compare years System.out.println("Thai year: " + thaiDate.get(ThaiBuddhistDate.YEAR)); System.out.println("ISO year: " + isoDate.getYear()); } }
此示例显示了泰国佛教日历和 ISO 日历之间的转换。 同一天以不同的年份编号在两个系统中表示。 月份和日期组件在两个日历中保持不变。
使用纪元
泰国佛教日历有一个纪元:BE (佛历)。 ThaiBuddhistEra
枚举表示这个纪元。 提供了与纪元相关的方法,以便与其他历法实现兼容。
package com.zetcode; import java.time.chrono.ThaiBuddhistDate; import java.time.chrono.ThaiBuddhistEra; public class Main { public static void main(String[] args) { ThaiBuddhistDate date = ThaiBuddhistDate.now(); // Get era ThaiBuddhistEra era = date.getEra(); System.out.println("Era: " + era); // Check era System.out.println("Is BE: " + (era == ThaiBuddhistEra.BE)); // Create date with era ThaiBuddhistDate eraDate = ThaiBuddhistDate.of(era, 2568, 4, 16); System.out.println("Date with era: " + eraDate); // List available eras System.out.println("Available eras: " + ThaiBuddhistChronology.INSTANCE.eras()); } }
此示例演示了在泰国佛教日历中使用纪元。 BE 纪元是此系统中唯一的纪元。 提供了纪元方法,以便与其他历法实现保持一致性。
日期算术
泰国佛教日期支持时间算术运算。 这些运算与 ISO 日历类似,但保持泰国佛教的年份计数。
package com.zetcode; import java.time.chrono.ThaiBuddhistDate; import java.time.temporal.ChronoUnit; public class Main { public static void main(String[] args) { ThaiBuddhistDate today = ThaiBuddhistDate.now(); System.out.println("Today: " + today); // Add days ThaiBuddhistDate tomorrow = today.plus(1, ChronoUnit.DAYS); System.out.println("Tomorrow: " + tomorrow); // Add months ThaiBuddhistDate nextMonth = today.plus(1, ChronoUnit.MONTHS); System.out.println("Next month: " + nextMonth); // Add years ThaiBuddhistDate nextYear = today.plus(1, ChronoUnit.YEARS); System.out.println("Next year: " + nextYear); // Subtract weeks ThaiBuddhistDate lastWeek = today.minus(1, ChronoUnit.WEEKS); System.out.println("Last week: " + lastWeek); } }
此示例显示了使用泰国佛教日期的各种时间算术运算。 这些运算在调整日期的同时保持了泰国佛教的年份计数。 支持所有标准的时间单位。
格式化和解析
泰国佛教日期可以使用 DateTimeFormatter
进行格式化和解析。 可以配置格式化程序以根据泰国惯例显示日期。
package com.zetcode; import java.time.chrono.ThaiBuddhistDate; import java.time.format.DateTimeFormatter; import java.time.format.FormatStyle; import java.util.Locale; public class Main { public static void main(String[] args) { ThaiBuddhistDate date = ThaiBuddhistDate.now(); // Default format System.out.println("Default format: " + date); // Format with pattern DateTimeFormatter patternFormat = DateTimeFormatter.ofPattern("G yyyy-MM-dd"); System.out.println("Pattern format: " + date.format(patternFormat)); // Localized format DateTimeFormatter thaiFormat = DateTimeFormatter .ofLocalizedDate(FormatStyle.FULL) .withLocale(new Locale("th", "TH")) .withChronology(ThaiBuddhistChronology.INSTANCE); System.out.println("Thai format: " + date.format(thaiFormat)); // Parse from string ThaiBuddhistDate parsed = ThaiBuddhistDate.parse("BE 2568-04-16"); System.out.println("Parsed date: " + parsed); } }
此示例演示了格式化和解析泰国佛教日期。 本地化格式显示了泰语和惯例的日期。 解析器可以读取各种格式的日期。
比较日期
泰国佛教日期可以使用标准比较方法进行比较。 比较考虑了完整的日期,包括年、月和日。
package com.zetcode; import java.time.chrono.ThaiBuddhistDate; import java.time.temporal.ChronoUnit; public class Main { public static void main(String[] args) { ThaiBuddhistDate today = ThaiBuddhistDate.now(); ThaiBuddhistDate tomorrow = today.plus(1, ChronoUnit.DAYS); ThaiBuddhistDate yesterday = today.minus(1, ChronoUnit.DAYS); // Comparison methods System.out.println("Is today before tomorrow? " + today.isBefore(tomorrow)); System.out.println("Is today after yesterday? " + today.isAfter(yesterday)); System.out.println("Compare today and tomorrow: " + today.compareTo(tomorrow)); // Equality check System.out.println("Is today equal to now? " + today.equals(ThaiBuddhistDate.now())); } }
此示例显示了比较泰国佛教日期的各种方法。 比较方法与其他 Java 时间类类似。 相等性要求所有日期组件完全匹配。
来源
Java ThaiBuddhistChronology 文档
在本文中,我们介绍了 Java ThaiBuddhistChronology 类的基本方法和特性。 理解这些概念对于在泰国和其他使用该日历系统的地区处理日期至关重要。
作者
列出所有Java教程。