Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.Calendar;
- import java.util.GregorianCalendar;
- public class Holiday {
- public static void main(String[] argv)
- {
- System.out.println("Slovenian holiday?: " + Holiday.isHoliday());
- }
- public static boolean isHoliday() {
- int thisYear = new GregorianCalendar().get(Calendar.YEAR);
- Calendar now = new GregorianCalendar();
- //now.set(thisYear , Calendar.OCTOBER,21);
- Calendar jan1 = new GregorianCalendar();
- jan1.set(thisYear, Calendar.JANUARY, 1);
- Calendar jan2 = new GregorianCalendar();
- jan2.set(thisYear, Calendar.JANUARY, 2);
- Calendar esterSunday = Holiday.findHolyDay(thisYear);
- Calendar esterMonday = Holiday.findHolyDay(thisYear);
- //System.out.println(esterMonday.toString());
- esterMonday.set(thisYear, esterMonday.get(Calendar.MONTH), esterMonday.get(Calendar.DAY_OF_MONTH) + 1);
- //System.out.println(esterMonday.toString());
- Calendar may1 = new GregorianCalendar();
- may1.set(thisYear, Calendar.MAY, 1);
- Calendar may2 = new GregorianCalendar();
- may2.set(thisYear, Calendar.MAY, 2);
- Calendar june25 = new GregorianCalendar();
- june25.set(thisYear, Calendar.JUNE, 25);
- Calendar august15 = new GregorianCalendar();
- august15.set(thisYear, Calendar.AUGUST, 15);
- Calendar oktober31 = new GregorianCalendar();
- oktober31.set(thisYear, Calendar.OCTOBER, 31);
- Calendar november1 = new GregorianCalendar();
- november1.set(thisYear, Calendar.NOVEMBER, 1);
- Calendar december25 = new GregorianCalendar();
- december25.set(thisYear, Calendar.DECEMBER, 25);
- Calendar december26 = new GregorianCalendar();
- december26.set(thisYear, Calendar.DECEMBER, 26);
- if( jan1.equals(now) || jan2.equals(now) || esterSunday.equals(now)
- || esterSunday.equals(now) || esterMonday.equals(now) || may1.equals(now) || may2.equals(now)
- || august15.equals(now) || oktober31.equals(now) || november1.equals(now) || december25.equals(now)
- || december26.equals(now))
- {
- //System.out.println("YUPI IT IS HOLIDAY!");
- return true;
- }
- else
- {
- //System.out.println("---------------------------------------" + thisYear);
- return false;
- }
- }
- public boolean debugDate(int day, int month, int year) {
- int thisYear = year;
- Calendar now = new GregorianCalendar();
- now.set(year , month-1 , day);
- // System.out.println(now.getTimeInMillis());
- Calendar jan1 = new GregorianCalendar();
- jan1.set(thisYear, Calendar.JANUARY, 1);
- Calendar jan2 = new GregorianCalendar();
- jan2.set(thisYear, Calendar.JANUARY, 2);
- Calendar esterSunday = Holiday.findHolyDay(thisYear);
- Calendar esterMonday = Holiday.findHolyDay(thisYear);
- //System.out.println(esterMonday.toString());
- esterMonday.set(thisYear, esterMonday.get(Calendar.MONTH), esterMonday.get(Calendar.DAY_OF_MONTH) + 1);
- //System.out.println(esterMonday.toString());
- Calendar may1 = new GregorianCalendar();
- may1.set(thisYear, Calendar.MAY, 1);
- Calendar may2 = new GregorianCalendar();
- may2.set(thisYear, Calendar.MAY, 2);
- Calendar june25 = new GregorianCalendar();
- june25.set(thisYear, Calendar.JUNE, 25);
- Calendar august15 = new GregorianCalendar();
- august15.set(thisYear, Calendar.AUGUST, 15);
- Calendar oktober31 = new GregorianCalendar();
- oktober31.set(thisYear, Calendar.OCTOBER, 31);
- Calendar november1 = new GregorianCalendar();
- november1.set(thisYear, Calendar.NOVEMBER, 1);
- Calendar december25 = new GregorianCalendar();
- december25.set(thisYear, Calendar.DECEMBER, 25);
- Calendar december26 = new GregorianCalendar();
- december26.set(thisYear, Calendar.DECEMBER, 26);
- if( jan1.equals(now) || jan2.equals(now) || esterSunday.equals(now)
- || esterSunday.equals(now) || esterMonday.equals(now) || may1.equals(now) || may2.equals(now)
- || august15.equals(now) || oktober31.equals(now) || november1.equals(now) || december25.equals(now)
- || december26.equals(now))
- {
- //System.out.println("YUPI IT IS HOLIDAY!");
- return true;
- }
- else
- {
- //System.out.println("---------------------------------------" + thisYear);
- return false;
- }
- }
- /*
- * Compute the day of the year that Holiday falls on. Step names E1 E2 etc.,
- * are direct references to Knuth, Vol 1, p 155. @exception
- * IllegalArgumentexception If the year is before 1582 (since the algorithm
- * only works on the Gregorian calendar).
- */
- private static final Calendar findHolyDay(int year) {
- if (year <= 1582) {
- throw new IllegalArgumentException(
- "Algorithm invalid before April 1583");
- }
- int golden, century, x, z, d, epact, n;
- golden = (year % 19) + 1; /* E1: metonic cycle */
- century = (year / 100) + 1; /* E2: e.g. 1984 was in 20th C */
- x = (3 * century / 4) - 12; /* E3: leap year correction */
- z = ((8 * century + 5) / 25) - 5; /* E3: sync with moon's orbit */
- d = (5 * year / 4) - x - 10;
- epact = (11 * golden + 20 + z - x) % 30; /* E5: epact */
- if ((epact == 25 && golden > 11) || epact == 24)
- epact++;
- n = 44 - epact;
- n += 30 * (n < 21 ? 1 : 0); /* E6: */
- n += 7 - ((d + n) % 7);
- if (n > 31)
- {/* E7: */
- Calendar ester = new GregorianCalendar();
- ester.set(year, 4 - 1, n - 31);
- return ester; /* April */
- }
- else
- {/* E7: */
- Calendar ester = new GregorianCalendar();
- ester.set(year, 3 - 1, n);
- return ester; /* March */
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement