Advertisement
Guest User

Untitled

a guest
Aug 2nd, 2015
190
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.38 KB | None | 0 0
  1. package br.com.pipi.util;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.Calendar;
  5. import java.util.Date;
  6. import java.util.GregorianCalendar;
  7.  
  8.  
  9. public class FeriadosUtil {
  10.  
  11. private final static long DAY_IN_MILLIS = 86400000;
  12.  
  13. public static Calendar getCarnaval(final int year) {
  14. return getSubtractedDays(getSundayOfEaster(year), 47);
  15. }
  16.  
  17. public static Calendar getSemanaSanta(final int year) {
  18. return getSubtractedDays(getSundayOfEaster(year), 2);
  19. }
  20.  
  21. public static Calendar getCorpusChristi(final int year) {
  22. return getAddedDays(getSundayOfEaster(year), 60);
  23. }
  24.  
  25. public static Calendar getPascoa(final int year) {
  26. return DateToCalendar(getSundayOfEaster(year));
  27. }
  28.  
  29. public static Date getSundayOfEaster(final int year) {
  30.  
  31. // step 2
  32. final int a = year % 19;
  33.  
  34. // step 3
  35. final int b = year / 100;
  36. final int c = year % 100;
  37.  
  38. // step 4
  39. final int d = b / 4;
  40. final int e = b % 4;
  41.  
  42. // step 5
  43. final int g = (8 * b + 13) / 25;
  44.  
  45. // step 6
  46. final int h = (19 * a + b - d - g + 15) % 30;
  47.  
  48. // step 7
  49. final int j = c / 4;
  50. final int k = c % 4;
  51.  
  52. // step 8
  53. final int m = (a + 11 * h) / 319;
  54.  
  55. // step 9
  56. final int r = (2 * e + 2 * j - k - h + m + 32) % 7;
  57.  
  58. // step 10
  59. final int n = (h - m + r + 90) / 25;
  60.  
  61. // step 11 (finally)
  62. final int p = (h - m + r + n + 19) % 32;
  63.  
  64. // building the actual date
  65. final Calendar calendar = new GregorianCalendar();
  66. calendar.set(Calendar.YEAR, year);
  67. calendar.set(Calendar.MONTH, n - 1);
  68. calendar.set(Calendar.DAY_OF_MONTH, p);
  69. calendar.set(Calendar.HOUR_OF_DAY, 0);
  70. calendar.set(Calendar.MINUTE, 0);
  71. calendar.set(Calendar.SECOND, 0);
  72. calendar.set(Calendar.MILLISECOND, 0);
  73.  
  74. return calendar.getTime();
  75.  
  76. }
  77.  
  78. private static Calendar getAddedDays(final Date date, final long numOfDays) {
  79. final Date dateCalculate = new Date(date.getTime() + (numOfDays * DAY_IN_MILLIS));
  80. return DateToCalendar(dateCalculate);
  81. }
  82.  
  83. private static Calendar getSubtractedDays(final Date date, final long numOfDays) {
  84. final Date dateCalculate = new Date(date.getTime() - (numOfDays * DAY_IN_MILLIS));
  85. return DateToCalendar(dateCalculate);
  86. }
  87.  
  88. public static Calendar DateToCalendar(final Date date) {
  89. final Calendar calendar = Calendar.getInstance();
  90. calendar.setTime(date);
  91. return calendar;
  92. }
  93.  
  94. public static boolean isFeriado(final Calendar calendar) {
  95.  
  96. final ArrayList<Calendar> feriados = new ArrayList<Calendar>();
  97. boolean found = false;
  98.  
  99. // Ano novo
  100. final Calendar date = Calendar.getInstance();
  101. date.set(calendar.get(Calendar.YEAR), Calendar.JANUARY, 1);
  102. feriados.add(date);
  103.  
  104. // Navegantes
  105. final Calendar date1 = Calendar.getInstance();
  106. date1.set(calendar.get(Calendar.YEAR), Calendar.FEBRUARY, 2);
  107. feriados.add(date1);
  108.  
  109. // Carnaval
  110. Calendar date2 = Calendar.getInstance();
  111. date2 = getCarnaval(calendar.get(Calendar.YEAR));
  112. feriados.add(date2);
  113.  
  114. // Pascoa
  115. Calendar date6 = Calendar.getInstance();
  116. date6 = getPascoa(calendar.get(Calendar.YEAR));
  117. feriados.add(date6);
  118.  
  119. // Semana Santa
  120. Calendar date3 = Calendar.getInstance();
  121. date3 = getSemanaSanta(calendar.get(Calendar.YEAR));
  122. feriados.add(date3);
  123.  
  124. // Tiradentes
  125. final Calendar date4 = Calendar.getInstance();
  126. date4.set(calendar.get(Calendar.YEAR), Calendar.APRIL, 21);
  127. feriados.add(date4);
  128.  
  129. // Dia do Trabalho
  130. final Calendar date5 = Calendar.getInstance();
  131. date5.set(calendar.get(Calendar.YEAR), Calendar.MAY, 1);
  132. feriados.add(date5);
  133.  
  134. // Corpus Christi
  135. Calendar date7 = Calendar.getInstance();
  136. date7 = getCorpusChristi(calendar.get(Calendar.YEAR));
  137. feriados.add(date7);
  138.  
  139. // Independência do Brasil
  140. final Calendar date13 = Calendar.getInstance();
  141. date13.set(calendar.get(Calendar.YEAR), Calendar.SEPTEMBER, 7);
  142. feriados.add(date13);
  143.  
  144. // Revolução Farroupilha
  145. final Calendar date8 = Calendar.getInstance();
  146. date8.set(calendar.get(Calendar.YEAR), Calendar.SEPTEMBER, 20);
  147. feriados.add(date8);
  148.  
  149. // Dia das Crianças / Nossa Senhora Aparecida
  150. final Calendar date9 = Calendar.getInstance();
  151. date9.set(calendar.get(Calendar.YEAR), Calendar.OCTOBER, 12);
  152. feriados.add(date9);
  153.  
  154. // Dia dos finados
  155. final Calendar date10 = Calendar.getInstance();
  156. date10.set(calendar.get(Calendar.YEAR), Calendar.NOVEMBER, 2);
  157. feriados.add(date10);
  158.  
  159. // Proclamação da República
  160. final Calendar date11 = Calendar.getInstance();
  161. date11.set(calendar.get(Calendar.YEAR), Calendar.NOVEMBER, 15);
  162. feriados.add(date11);
  163.  
  164. // Natal
  165. final Calendar date12 = Calendar.getInstance();
  166. date12.set(calendar.get(Calendar.YEAR), Calendar.DECEMBER, 25);
  167. feriados.add(date12);
  168.  
  169. for (final Calendar feriado : feriados) {
  170. found = (calendar.get(Calendar.DAY_OF_YEAR) == feriado.get(Calendar.DAY_OF_YEAR));
  171. if (found) {
  172. break;
  173. }
  174. }
  175. return found;
  176. }
  177.  
  178.  
  179. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement