001 /*
002 * Zmanim Java API
003 * Copyright (C) 2011 Eliyahu Hershfeld
004 * Copyright (C) September 2002 Avrom Finkelstien
005 *
006 * This program is free software; you can redistribute it and/or modify it under the terms of the
007 * GNU General Public License as published by the Free Software Foundation; either version 2 of the
008 * License, or (at your option) any later version.
009 *
010 * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
011 * even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
012 * General Public License for more details.
013 *
014 * You should have received a copy of the GNU General Public License along with this program; if
015 * not, write to the Free Software Foundation, Inc. 59 Temple Place - Suite 330, Boston, MA
016 * 02111-1307, USA or connect to: http://www.fsf.org/copyleft/gpl.html
017 */
018 package net.sourceforge.zmanim.hebrewcalendar;
019
020 /**
021 * The HebrewDateFormatter class formats a {@link JewishDate}.
022 *
023 * This class is part of a refactoring of <a
024 * href="http://www.facebook.com/avromf">Avrom Finkelstien's</a> HebrewDate
025 * class that removes formatting code from the core HebrewDate class.
026 * TODO: add additional formatting options including Hebrew formatting support.
027 *
028 * @see java.util.Date
029 * @see java.util.Calendar
030 * @author © Avrom Finkelstien 2002
031 * @author © Eliyahu Hershfeld 2011
032 * @version 0.1
033 */
034 public class HebrewDateFormatter {
035 private static final String[] hebrewMonths = { "Nissan", "Iyar", "Sivan",
036 "Tamuz", "Av", "Elul", "Tishrei", "Cheshvan", "Kislev", "Teves",
037 "Shevat", "Adar", "Adar II" };
038
039 // parsha names in both Ashkenazi and Sephardi pronunciation
040 // Somewhat redundant (don't you think?)
041 // private static final String[][] Prounouncewdparshios = { { "Bereshit", "Bereshis" },
042 // { "Noach", "Noach" }, { "Lech-Lecha", "Lech-Lecha" },
043 // { "Vayera", "Vayera" }, { "Chayei Sara", "Chayei Sara" },
044 // { "Toldot", "Toldos" }, { "Vayetzei", "Vayetzei" },
045 // { "Vayishlach", "Vayishlach" }, { "Vayeshev", "Vayeshev" },
046 // { "Miketz", "Miketz" }, { "Vayigash", "Vayigash" },
047 // { "Vayechi", "Vayechi" }, { "Shemot", "Shemos" },
048 // { "Vaera", "Vaera" }, { "Bo", "Bo" }, { "Beshalach", "Beshalach" },
049 // { "Yitro", "Yisro" }, { "Mishpatim", "Mishpatim" },
050 // { "Terumah", "Terumah" }, { "Tetzaveh", "Tetzaveh" },
051 // { "Ki Tisa", "Ki Sisa" }, { "Vayakhel", "Vayakhel" },
052 // { "Pekudei", "Pekudei" }, { "Vayikra", "Vayikra" },
053 // { "Tzav", "Tzav" }, { "Shmini", "Shmini" }, { "Tazria", "Sazria" },
054 // { "Metzora", "Metzora" }, { "Achrei Mot", "Achrei Mos" },
055 // { "Kedoshim", "Kedoshim" }, { "Emor", "Emor" },
056 // { "Behar", "Behar" }, { "Bechukotai", "Bechukosai" },
057 // { "Bamidbar", "Bamidbar" }, { "Nasso", "Nasso" },
058 // { "Beha'alotcha", "Beha'aloscha" }, { "Sh'lach", "Sh'lach" },
059 // { "Korach", "Korach" }, { "Chukat", "Chukas" },
060 // { "Balak", "Balak" }, { "Pinchas", "Pinchas" },
061 // { "Matot", "Matos" }, { "Masei", "Masei" },
062 // { "Devarim", "Devarim" }, { "Vaetchanan", "Vaeschanan" },
063 // { "Eikev", "Eikev" }, { "Re'eh", "Re'eh" },
064 // { "Shoftim", "Shoftim" }, { "Ki Teitzei", "Ki Seitzei" },
065 // { "Ki Tavo", "Ki Savo" }, { "Nitzavim", "Nitzavim" },
066 // { "Vayeilech", "Vayeilech" }, { "Ha'Azinu", "Ha'Azinu" },
067 // { "Vayakhel Pekudei", "Vayakhel Pekudei" },
068 // { "Tazria Metzora", "Sazria Metzora" },
069 // { "Achrei Mot Kedoshim", "Achrei Mos Kedoshim" },
070 // { "Behar Bechukotai", "Behar Bechukosai" },
071 // { "Chukat Balak", "Chukas Balak" },
072 // { "Matot Masei", "Matos Masei" },
073 // { "Nitzavim Vayeilech", "Nitzavim Vayeilech" } };
074
075 /**
076 * Returns a string containing the Hebrew date in the form,
077 * "day Month, year" e.g. "21 Shevat, 5729"
078 */
079 public static String getHebrewDateAsString(JewishDate hd) {
080 return hd.getJewishDayOfMonth() + " " + getHebrewMonthAsString(hd) + ", " + hd.getJewishYear();
081 }
082
083 /**
084 * returns a string of the current Hebrew month such as "Tishrei".
085 */
086 public static String getHebrewMonthAsString(JewishDate hd) {
087 // if it is a leap year and 12th month //
088 if (JewishDate.isJewishLeapYear(hd.getJewishYear()) && hd.getJewishMonth() == 12) {
089 return "Adar I";
090 } else {
091 return hebrewMonths[hd.getJewishMonth() - 1];
092 }
093 }
094
095 /**
096 * returns a String of the Omer day in the form "Omer X" or "Lag B'Omer" or
097 * an empty string if there is no Omer this day.
098 * FIXME - Is this method really required?
099 */
100 public static String getOmerAsString(JewishDate hd) {
101 int omer = hd.getDayOfOmer();
102
103 // if not Omer day //
104 if (omer == 0) {
105 return "";
106
107 } else if (omer == 33) { // if lag b'omer
108 return "Lag B'Omer";
109 } else {
110 return "Omer " + omer;
111 }
112 }
113 }