2015-05-04 13 views
5

Sử dụng Java 8java.time.LocalDate, bạn có thể tính Ngày tết của Trung Quốc?Sử dụng Java 8 java.time.LocalDate, bạn có thể tính toán ngày Tết của Trung Quốc không?

+0

Xem thêm [JDK-issue] này (https://bugs.openjdk.java.net/browse/JDK-4609228). Để đặt kỳ vọng của bạn, tôi đoán hỗ trợ cho một âm lịch Trung Quốc sẽ không bao giờ có trong Java chuẩn. –

+0

Nếu tôi có thể trả lời câu hỏi của bạn, bạn có phiền không? Cảm ơn! – camiblanch

Trả lời

1

Có thể là không.

Oracle Documentation tuyên bố rằng chức năng này sử dụng hệ thống lịch Gregorian. Tết Nguyên Đán được dựa trên lịch Trung Quốc và âm lịch. (Source)

0

Chắc chắn là không thể nếu không có thư viện bên ngoài vì Java chuẩn không chứa lịch Trung Quốc. Việc tính toán năm mới của Trung Quốc đòi hỏi các tính toán thiên văn phức tạp và Java chuẩn cũng không có hỗ trợ thiên văn học.

Như khắc phục, sử dụng thư viện của tôi Time4J (v4.35) và sau đó viết đoạn mã sau:

LocalDate gregorian = LocalDate.now(ZoneId.of("Asia/Shanghai")); 
ChineseCalendar cc = ChineseCalendar.ofNewYear(gregorian.getYear()); 
LocalDate newYearAsGregorian = cc.transform(PlainDate.axis()).toTemporalAccessor(); 

System.out.println(
    newYearAsGregorian); // 2018-02-16 

System.out.println(
    "Year of the " 
     + cc.get(ChineseCalendar.YEAR_OF_CYCLE).getZodiac(Locale.ENGLISH)); 
// Year of the Dog 

Để biết thêm chi tiết, xem thêm API.

Các vấn đề liên quan