Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package br.com.pipi.util;
- import java.util.ArrayList;
- import java.util.Calendar;
- import java.util.Date;
- import java.util.GregorianCalendar;
- public class FeriadosUtil {
- private final static long DAY_IN_MILLIS = 86400000;
- public static Calendar getCarnaval(final int year) {
- return getSubtractedDays(getSundayOfEaster(year), 47);
- }
- public static Calendar getSemanaSanta(final int year) {
- return getSubtractedDays(getSundayOfEaster(year), 2);
- }
- public static Calendar getCorpusChristi(final int year) {
- return getAddedDays(getSundayOfEaster(year), 60);
- }
- public static Calendar getPascoa(final int year) {
- return DateToCalendar(getSundayOfEaster(year));
- }
- public static Date getSundayOfEaster(final int year) {
- // step 2
- final int a = year % 19;
- // step 3
- final int b = year / 100;
- final int c = year % 100;
- // step 4
- final int d = b / 4;
- final int e = b % 4;
- // step 5
- final int g = (8 * b + 13) / 25;
- // step 6
- final int h = (19 * a + b - d - g + 15) % 30;
- // step 7
- final int j = c / 4;
- final int k = c % 4;
- // step 8
- final int m = (a + 11 * h) / 319;
- // step 9
- final int r = (2 * e + 2 * j - k - h + m + 32) % 7;
- // step 10
- final int n = (h - m + r + 90) / 25;
- // step 11 (finally)
- final int p = (h - m + r + n + 19) % 32;
- // building the actual date
- final Calendar calendar = new GregorianCalendar();
- calendar.set(Calendar.YEAR, year);
- calendar.set(Calendar.MONTH, n - 1);
- calendar.set(Calendar.DAY_OF_MONTH, p);
- calendar.set(Calendar.HOUR_OF_DAY, 0);
- calendar.set(Calendar.MINUTE, 0);
- calendar.set(Calendar.SECOND, 0);
- calendar.set(Calendar.MILLISECOND, 0);
- return calendar.getTime();
- }
- private static Calendar getAddedDays(final Date date, final long numOfDays) {
- final Date dateCalculate = new Date(date.getTime() + (numOfDays * DAY_IN_MILLIS));
- return DateToCalendar(dateCalculate);
- }
- private static Calendar getSubtractedDays(final Date date, final long numOfDays) {
- final Date dateCalculate = new Date(date.getTime() - (numOfDays * DAY_IN_MILLIS));
- return DateToCalendar(dateCalculate);
- }
- public static Calendar DateToCalendar(final Date date) {
- final Calendar calendar = Calendar.getInstance();
- calendar.setTime(date);
- return calendar;
- }
- public static boolean isFeriado(final Calendar calendar) {
- final ArrayList<Calendar> feriados = new ArrayList<Calendar>();
- boolean found = false;
- // Ano novo
- final Calendar date = Calendar.getInstance();
- date.set(calendar.get(Calendar.YEAR), Calendar.JANUARY, 1);
- feriados.add(date);
- // Navegantes
- final Calendar date1 = Calendar.getInstance();
- date1.set(calendar.get(Calendar.YEAR), Calendar.FEBRUARY, 2);
- feriados.add(date1);
- // Carnaval
- Calendar date2 = Calendar.getInstance();
- date2 = getCarnaval(calendar.get(Calendar.YEAR));
- feriados.add(date2);
- // Pascoa
- Calendar date6 = Calendar.getInstance();
- date6 = getPascoa(calendar.get(Calendar.YEAR));
- feriados.add(date6);
- // Semana Santa
- Calendar date3 = Calendar.getInstance();
- date3 = getSemanaSanta(calendar.get(Calendar.YEAR));
- feriados.add(date3);
- // Tiradentes
- final Calendar date4 = Calendar.getInstance();
- date4.set(calendar.get(Calendar.YEAR), Calendar.APRIL, 21);
- feriados.add(date4);
- // Dia do Trabalho
- final Calendar date5 = Calendar.getInstance();
- date5.set(calendar.get(Calendar.YEAR), Calendar.MAY, 1);
- feriados.add(date5);
- // Corpus Christi
- Calendar date7 = Calendar.getInstance();
- date7 = getCorpusChristi(calendar.get(Calendar.YEAR));
- feriados.add(date7);
- // Independência do Brasil
- final Calendar date13 = Calendar.getInstance();
- date13.set(calendar.get(Calendar.YEAR), Calendar.SEPTEMBER, 7);
- feriados.add(date13);
- // Revolução Farroupilha
- final Calendar date8 = Calendar.getInstance();
- date8.set(calendar.get(Calendar.YEAR), Calendar.SEPTEMBER, 20);
- feriados.add(date8);
- // Dia das Crianças / Nossa Senhora Aparecida
- final Calendar date9 = Calendar.getInstance();
- date9.set(calendar.get(Calendar.YEAR), Calendar.OCTOBER, 12);
- feriados.add(date9);
- // Dia dos finados
- final Calendar date10 = Calendar.getInstance();
- date10.set(calendar.get(Calendar.YEAR), Calendar.NOVEMBER, 2);
- feriados.add(date10);
- // Proclamação da República
- final Calendar date11 = Calendar.getInstance();
- date11.set(calendar.get(Calendar.YEAR), Calendar.NOVEMBER, 15);
- feriados.add(date11);
- // Natal
- final Calendar date12 = Calendar.getInstance();
- date12.set(calendar.get(Calendar.YEAR), Calendar.DECEMBER, 25);
- feriados.add(date12);
- for (final Calendar feriado : feriados) {
- found = (calendar.get(Calendar.DAY_OF_YEAR) == feriado.get(Calendar.DAY_OF_YEAR));
- if (found) {
- break;
- }
- }
- return found;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement