如何使ISO8601每年生产希伯来日,一年中的哪一周?

时间:2013-02-11 01:59:11

标签: calendar hebrew iso8601 date-arithmetic

有人能想出一种方法来计算希伯来日历的年度和年度周?我正在使用ISO 8601,它可以返回希伯来语的年份,月份,日期和星期几。我正在尝试编写可重复使用的代码来计算任何Torah部分(Parsha)。

2 个答案:

答案 0 :(得分:1)

请查看hebcal命令来执行此操作。还有JavaScript端口(无耻插件,由我编写),JavaPerl

答案 1 :(得分:1)

如果您可以使用Java,这很容易。我的图书馆Time4J启用了您想要的功能(在Hebrew calendar中):

PlainDate iso8601 = Iso8601Format.parseDate("2018-03-16");
HebrewCalendar hc = iso8601.transform(HebrewCalendar.axis());

int hyear = hc.getYear();
HebrewMonth hmonth = hc.getMonth(); // obtains an enum
int hdayOfMonth = hc.getDayOfMonth();
Weekday hdayOfWeek = hc.getDayOfWeek(); // obtains an enum
int hdayOfYear = hc.getDayOfYear();

int weekOfYear =
    hc.get(
        CommonElements.weekOfYear(
            HebrewCalendar.axis(),
            HebrewCalendar.getDefaultWeekmodel()
        )
    );

System.out.println("year=" + hyear); // 5778
System.out.println("month=" + hmonth); // ADAR_II (technical result, see next line)
System.out.println(
    "month=" + hmonth.getDisplayName(Locale.ENGLISH, hc.isLeapYear())); // Adar

System.out.println("day-of-month=" + hdayOfMonth); // 29
System.out.println("day-of-week=" + hdayOfWeek); // FRIDAY
System.out.println("day-of-year=" + hdayOfYear); // 207
System.out.println("week-of-year=" + weekOfYear); // 30

还有更多的功能,例如考虑前一天晚上的开始(包括日落的天文计算)或希伯来圣经时间或几个月的不同编号方案等。