document.write('
Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. import java.util.Calendar;
  2. import java.util.GregorianCalendar;
  3. public class Holiday {
  4.     public static void main(String[] argv)
  5.     {
  6.         System.out.println("Slovenian holiday?: " + Holiday.isHoliday());
  7.     }
  8.     public  static boolean isHoliday() {
  9.         int thisYear = new GregorianCalendar().get(Calendar.YEAR);
  10.         Calendar now = new GregorianCalendar();
  11.         //now.set(thisYear , Calendar.OCTOBER,21);
  12.         Calendar jan1 = new GregorianCalendar();
  13.         jan1.set(thisYear, Calendar.JANUARY, 1);
  14.         Calendar jan2 = new GregorianCalendar();
  15.         jan2.set(thisYear, Calendar.JANUARY, 2);
  16.         Calendar esterSunday = Holiday.findHolyDay(thisYear);
  17.         Calendar esterMonday = Holiday.findHolyDay(thisYear);
  18.         //System.out.println(esterMonday.toString());
  19.         esterMonday.set(thisYear, esterMonday.get(Calendar.MONTH), esterMonday.get(Calendar.DAY_OF_MONTH) + 1);
  20.         //System.out.println(esterMonday.toString());
  21.         Calendar may1 = new GregorianCalendar();
  22.         may1.set(thisYear, Calendar.MAY, 1);
  23.         Calendar may2 = new GregorianCalendar();
  24.         may2.set(thisYear, Calendar.MAY, 2);
  25.         Calendar june25 = new GregorianCalendar();
  26.         june25.set(thisYear, Calendar.JUNE, 25);
  27.         Calendar august15 = new GregorianCalendar();
  28.         august15.set(thisYear, Calendar.AUGUST, 15);
  29.         Calendar oktober31 = new GregorianCalendar();
  30.         oktober31.set(thisYear, Calendar.OCTOBER, 31);
  31.         Calendar november1 = new GregorianCalendar();
  32.         november1.set(thisYear,  Calendar.NOVEMBER, 1);
  33.         Calendar december25 = new GregorianCalendar();
  34.         december25.set(thisYear, Calendar.DECEMBER, 25);
  35.         Calendar december26 = new GregorianCalendar();
  36.         december26.set(thisYear, Calendar.DECEMBER, 26);
  37.         if( jan1.equals(now) || jan2.equals(now) || esterSunday.equals(now)
  38.         || esterSunday.equals(now) || esterMonday.equals(now) || may1.equals(now) || may2.equals(now)
  39.         || august15.equals(now) || oktober31.equals(now) || november1.equals(now) || december25.equals(now)
  40.         || december26.equals(now))
  41.         {
  42.             //System.out.println("YUPI IT IS HOLIDAY!");
  43.             return true;
  44.         }
  45.         else
  46.         {
  47.             //System.out.println("---------------------------------------" + thisYear);
  48.             return false;
  49.         }
  50.     }
  51.     public  boolean debugDate(int day, int month, int year) {
  52.         int thisYear = year;
  53.         Calendar now = new GregorianCalendar();
  54.         now.set(year , month-1 , day);
  55.         //        System.out.println(now.getTimeInMillis());
  56.         Calendar jan1 = new GregorianCalendar();
  57.         jan1.set(thisYear, Calendar.JANUARY, 1);
  58.         Calendar jan2 = new GregorianCalendar();
  59.         jan2.set(thisYear, Calendar.JANUARY, 2);
  60.         Calendar esterSunday = Holiday.findHolyDay(thisYear);
  61.         Calendar esterMonday = Holiday.findHolyDay(thisYear);
  62.         //System.out.println(esterMonday.toString());
  63.         esterMonday.set(thisYear, esterMonday.get(Calendar.MONTH), esterMonday.get(Calendar.DAY_OF_MONTH) + 1);
  64.         //System.out.println(esterMonday.toString());
  65.         Calendar may1 = new GregorianCalendar();
  66.         may1.set(thisYear, Calendar.MAY, 1);
  67.         Calendar may2 = new GregorianCalendar();
  68.         may2.set(thisYear, Calendar.MAY, 2);
  69.         Calendar june25 = new GregorianCalendar();
  70.         june25.set(thisYear, Calendar.JUNE, 25);
  71.         Calendar august15 = new GregorianCalendar();
  72.         august15.set(thisYear, Calendar.AUGUST, 15);
  73.         Calendar oktober31 = new GregorianCalendar();
  74.         oktober31.set(thisYear, Calendar.OCTOBER, 31);
  75.         Calendar november1 = new GregorianCalendar();
  76.         november1.set(thisYear,  Calendar.NOVEMBER, 1);
  77.         Calendar december25 = new GregorianCalendar();
  78.         december25.set(thisYear, Calendar.DECEMBER, 25);
  79.         Calendar december26 = new GregorianCalendar();
  80.         december26.set(thisYear, Calendar.DECEMBER, 26);
  81.         if( jan1.equals(now) || jan2.equals(now) || esterSunday.equals(now)
  82.         || esterSunday.equals(now) || esterMonday.equals(now) || may1.equals(now) || may2.equals(now)
  83.         || august15.equals(now) || oktober31.equals(now) || november1.equals(now) || december25.equals(now)
  84.         || december26.equals(now))
  85.         {
  86.             //System.out.println("YUPI IT IS HOLIDAY!");
  87.             return true;
  88.         }
  89.         else
  90.         {
  91.             //System.out.println("---------------------------------------" + thisYear);
  92.             return false;
  93.         }
  94.     }
  95.     /*
  96.     * Compute the day of the year that Holiday falls on. Step names E1 E2 etc.,
  97.     * are direct references to Knuth, Vol 1, p 155. @exception
  98.     * IllegalArgumentexception If the year is before 1582 (since the algorithm
  99.     * only works on the Gregorian calendar).
  100.     */
  101.     private static final Calendar findHolyDay(int year) {
  102.         if (year <= 1582) {
  103.             throw new IllegalArgumentException(
  104.             "Algorithm invalid before April 1583");
  105.         }
  106.         int golden, century, x, z, d, epact, n;
  107.         golden = (year % 19) + 1; /* E1: metonic cycle */
  108.         century = (year / 100) + 1; /* E2: e.g. 1984 was in 20th C */
  109.         x = (3 * century / 4) - 12; /* E3: leap year correction */
  110.         z = ((8 * century + 5) / 25) - 5; /* E3: sync with moon\'s orbit */
  111.         d = (5 * year / 4) - x - 10;
  112.         epact = (11 * golden + 20 + z - x) % 30; /* E5: epact */
  113.         if ((epact == 25 && golden > 11) || epact == 24)
  114.         epact++;
  115.         n = 44 - epact;
  116.         n += 30 * (n < 21 ? 1 : 0); /* E6: */
  117.         n += 7 - ((d + n) % 7);
  118.         if (n > 31)
  119.         {/* E7: */
  120.             Calendar ester = new GregorianCalendar();
  121.             ester.set(year, 4 - 1, n - 31);
  122.             return ester; /* April */
  123.         }
  124.         else
  125.         {/* E7: */
  126.             Calendar ester = new GregorianCalendar();
  127.             ester.set(year, 3 - 1, n);
  128.             return ester; /* March */
  129.         }
  130.     }
  131. }
');