Java ThaiBuddhistDate 类
最后修改时间:2025 年 4 月 16 日
java.time.chrono.ThaiBuddhistDate 类表示泰国佛教日历系统中的日期。 该日历比公历早 543 年。 它在泰国很常用。
ThaiBuddhistDate 是不可变的且线程安全的。 它实现了 ChronoLocalDate 接口。 该类提供了根据泰国佛教年历处理日期的方法。
ThaiBuddhistDate 类概述
ThaiBuddhistDate 提供了创建、操作和格式化日期的方法。 关键操作包括日期算术、字段访问以及与其他日历系统的转换。 该类处理从公元 1 年开始的日期。
public final class ThaiBuddhistDate implements ChronoLocalDate, Serializable {
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 int getEraValue();
public ThaiBuddhistEra getEra();
public int lengthOfMonth();
public ThaiBuddhistDate plus(long amountToAdd, TemporalUnit unit);
public ThaiBuddhistDate minus(long amountToSubtract, TemporalUnit unit);
}
上面的代码显示了 ThaiBuddhistDate 提供的关键方法。 这些方法允许在泰国佛教日历系统中创建、操作和查询日期。
创建 ThaiBuddhistDate 对象
可以通过多种方式创建 ThaiBuddhistDate 对象。 最常用的方法是 now 获取当前日期,以及用于特定日期的工厂方法。 还支持从其他日期类型进行转换。
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 date1 = ThaiBuddhistDate.of(2565, 4, 15);
System.out.println("Specific Thai date: " + date1);
// From LocalDate
ThaiBuddhistDate date2 = ThaiBuddhistDate.from(LocalDate.of(2022, 4, 15));
System.out.println("Converted from LocalDate: " + date2);
// With time zone
ThaiBuddhistDate date3 = ThaiBuddhistDate.now(ZoneId.of("Asia/Bangkok"));
System.out.println("Current date in Bangkok: " + date3);
}
}
此示例演示了创建 ThaiBuddhistDate 对象的不同方式。 输出显示了泰国佛教年历中的日期。 请注意与公历日期的年份差异。
访问日期组件
可以将 ThaiBuddhistDate 分解为年、月和日组件。 这些值遵循泰国佛教日历系统。 还可以访问时代。
package com.zetcode;
import java.time.chrono.ThaiBuddhistDate;
import java.time.temporal.ChronoField;
public class Main {
public static void main(String[] args) {
ThaiBuddhistDate date = ThaiBuddhistDate.now();
// Get year (Buddhist era)
int year = date.get(ChronoField.YEAR);
System.out.println("Year: " + year);
// Get month
int month = date.get(ChronoField.MONTH_OF_YEAR);
System.out.println("Month: " + month);
// Get day
int day = date.get(ChronoField.DAY_OF_MONTH);
System.out.println("Day: " + day);
// Get era
System.out.println("Era: " + date.getEra());
}
}
此示例显示了如何从 ThaiBuddhistDate 中提取组件。 该年份比公历早 543 年。 月和日的值与公历一致。
日期算术
ThaiBuddhistDate 支持通过 plus 和 minus 方法进行日期算术运算。 这些操作对于计算未来或过去的日期很有用。 该类可以正确处理月和年的边界。
package com.zetcode;
import java.time.chrono.ThaiBuddhistDate;
import java.time.temporal.ChronoUnit;
public class Main {
public static void main(String[] args) {
ThaiBuddhistDate date = ThaiBuddhistDate.of(2565, 4, 15);
// Add days
ThaiBuddhistDate plusDays = date.plus(10, ChronoUnit.DAYS);
System.out.println("10 days later: " + plusDays);
// Subtract months
ThaiBuddhistDate minusMonths = date.minus(2, ChronoUnit.MONTHS);
System.out.println("2 months earlier: " + minusMonths);
// Add years
ThaiBuddhistDate plusYears = date.plus(1, ChronoUnit.YEARS);
System.out.println("1 year later: " + plusYears);
// Complex operation
ThaiBuddhistDate complex = date.plus(3, ChronoUnit.MONTHS)
.minus(15, ChronoUnit.DAYS);
System.out.println("Complex operation result: " + complex);
}
}
此示例显示了使用 ThaiBuddhistDate 执行日期算术运算的各种方式。 操作可以使用 ChronoUnit 常量来表示不同的时间单位。 所有计算都遵循泰国佛教日历规则。
比较日期
可以比较 ThaiBuddhistDate 对象以确定时间顺序。 该类提供了 isAfter、isBefore 和 compareTo 方法。 这些比较遵循泰国佛教年历。
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);
System.out.println("Today is before tomorrow: " + today.isBefore(tomorrow));
System.out.println("Today is after yesterday: " + today.isAfter(yesterday));
System.out.println("Comparison result: " + today.compareTo(tomorrow));
// Equality check
ThaiBuddhistDate sameDate = ThaiBuddhistDate.of(
today.get(ChronoField.YEAR),
today.get(ChronoField.MONTH_OF_YEAR),
today.get(ChronoField.DAY_OF_MONTH));
System.out.println("Today equals sameDate: " + today.equals(sameDate));
}
}
此示例演示了比较 ThaiBuddhistDate 对象的各种方式。 比较方法会考虑包括年、月和日在内的完整日期。 请注意,相等性要求所有组件完全匹配。
在日历系统之间转换
ThaiBuddhistDate 可以与公历等其他日历系统相互转换。 当在应用程序中使用多个日历系统时,这些转换至关重要。
package com.zetcode;
import java.time.LocalDate;
import java.time.chrono.ThaiBuddhistDate;
import java.time.format.DateTimeFormatter;
public class Main {
public static void main(String[] args) {
ThaiBuddhistDate thaiDate = ThaiBuddhistDate.now();
// Convert to LocalDate (Gregorian)
LocalDate gregorianDate = LocalDate.from(thaiDate);
System.out.println("Gregorian date: " + gregorianDate);
// Convert back to ThaiBuddhistDate
ThaiBuddhistDate backToThai = ThaiBuddhistDate.from(gregorianDate);
System.out.println("Back to Thai: " + backToThai);
// Formatting
DateTimeFormatter formatter = DateTimeFormatter
.ofPattern("dd MMM yyyy GG");
System.out.println("Formatted: " + formatter.format(thaiDate));
}
}
此示例演示了 ThaiBuddhistDate 和公历日期之间的转换。 格式化程序显示了如何使用佛教纪元标记显示日期。 所有转换都保留了不同日历系统中的同一天。
处理日期字段
ThaiBuddhistDate 提供了查询各种日期字段的方法。 这些字段包括星期几、一年中的第几天和月份长度。 这些值遵循泰国佛教日历规则。
package com.zetcode;
import java.time.DayOfWeek;
import java.time.chrono.ThaiBuddhistDate;
import java.time.temporal.ChronoField;
public class Main {
public static void main(String[] args) {
ThaiBuddhistDate date = ThaiBuddhistDate.of(2565, 4, 15);
// Day of week
DayOfWeek dow = DayOfWeek.from(date);
System.out.println("Day of week: " + dow);
// Day of year
int doy = date.get(ChronoField.DAY_OF_YEAR);
System.out.println("Day of year: " + doy);
// Month length
int monthLength = date.lengthOfMonth();
System.out.println("Days in month: " + monthLength);
// Year length
int yearLength = date.lengthOfYear();
System.out.println("Days in year: " + yearLength);
// Leap year
System.out.println("Is leap year: " + date.isLeapYear());
}
}
此示例显示了如何从 ThaiBuddhistDate 查询各种日期字段。 星期几的值与 ISO 日历匹配。 月份和年份的长度与公历遵循相同的规则。
来源
在本文中,我们介绍了 Java ThaiBuddhistDate 类的基本方法和功能。 了解这些概念对于在 Java 应用程序中使用泰国佛教日历日期至关重要。
作者
列出所有Java教程。