/* * * Copyright (c) 2013 - 2014 INT - National Institute of Technology & COPPE - Alberto Luiz Coimbra Institute - Graduate School and Research in Engineering. * See the file license.txt for copyright permission. * */ package util; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; import java.util.Locale; import java.util.regex.Matcher; import java.util.regex.Pattern; import modelo.PerioPM; public class DataUtil { private static SimpleDateFormat sdf_data_simples = new SimpleDateFormat("dd/MM/yyyy"); private static SimpleDateFormat sdf_hora_simples = new SimpleDateFormat("HH:mm:ss"); private static SimpleDateFormat sdf_hora_minuto_simples = new SimpleDateFormat("HH:mm"); private static SimpleDateFormat sdf_data_hora = new SimpleDateFormat("HH"); private static SimpleDateFormat sdf_data_minuto = new SimpleDateFormat("mm"); private static SimpleDateFormat sdf_data_segundo = new SimpleDateFormat("ss"); private static SimpleDateFormat sdf_data_dia = new SimpleDateFormat("dd"); private static SimpleDateFormat sdf_data_mes_extenso = new SimpleDateFormat("MMMMM", new Locale("pt", "BR")); private static SimpleDateFormat sdf_data_mes = new SimpleDateFormat("MM"); private static SimpleDateFormat sdf_data_ano = new SimpleDateFormat("yyyy"); public DataUtil() { } public static String formatarDataCompleta(Calendar data) { Date dataDate = data.getTime(); return sdf_data_dia.format(dataDate) + " de " + sdf_data_mes_extenso.format(dataDate) + " de " + sdf_data_ano.format(dataDate) + " �s " + sdf_hora_simples.format(dataDate); } public static String formatarDataParaPadraoPerioPM(PerioPM perioPM){ Date dateInicial = perioPM.getDataInicial().getTime(); Date dateFinal = perioPM.getDataFinal().getTime(); return sdf_data_simples.format(dateInicial) + " a " + sdf_data_simples.format(dateFinal); } public static String formatarHorario(Date data) { return sdf_hora_minuto_simples.format(data); } public static Date formatarParaDate(String dataStr, String formato) throws java.text.ParseException { Pattern pattern = Pattern.compile(formato); Matcher matcher = pattern.matcher(dataStr); if (matcher.matches()) { return new SimpleDateFormat(formato).parse(dataStr); } return null; } /** * <b>Autor:</b> Walanem * <br/> * Retorna o n�mero de semanas entre uma data e outra * * @param Calendar data1 * @param Calendar data2 * @return boolean */ public static int numeroSemanas(Calendar data1, Calendar data2) { data1 = new GregorianCalendar(data1.get(Calendar.YEAR), data1.get(Calendar.MONTH), data1.get(Calendar.DAY_OF_MONTH)); data2 = new GregorianCalendar(data2.get(Calendar.YEAR), data2.get(Calendar.MONTH), data2.get(Calendar.DAY_OF_MONTH)); long ms; //subtrai a menor data da maior if (data1.after(data2)) { ms = data1.getTimeInMillis() - data2.getTimeInMillis(); } else { ms = data2.getTimeInMillis() - data1.getTimeInMillis(); } //calcula o numero de semanas return (int) (ms / (1000 * 3600 * 24 * 7)); } public static int numeroSemanas(Date data1, Date data2) { Calendar c1 = new GregorianCalendar(); c1.setTime(data1); Calendar c2 = new GregorianCalendar(); c2.setTime(data2); return numeroSemanas(c1, c2); } /** * <b>Autor:</b> Walanem * <br/> * Retorna true caso as datas tenham o mesmo dia, mes e ano * * @param Calendar data1 * @param Calendar data2 * @return boolean */ public static boolean datasIguais(Calendar data1, Calendar data2) { if (data1.get(Calendar.DAY_OF_MONTH) != data2.get(Calendar.DAY_OF_MONTH)) { return false; } if (data1.get(Calendar.MONTH) != data2.get(Calendar.MONTH)) { return false; } if (data1.get(Calendar.YEAR) != data2.get(Calendar.YEAR)) { return false; } return true; } /** * <b>Autor:</b> Walanem * <br/> * M�todo que valida se uma dada Data final eh posterior a uma data Inicial fornecida. * Em caso de sucesso, o metodo retorna 'true'. Caso contrario, retorna 'false'. * * @param Date dataInicial * @param Date dataFinal * @return boolean */ public static boolean validacaoDatasInicialEFinal(Date dataInicial, Date dataFinal) { return dataFinal.after(dataInicial); } public static boolean datasIguais(Date data1, Date data2) { Calendar calendar1 = dateToCalendar(data1); Calendar calendar2 = dateToCalendar(data2); return datasIguais(calendar1, calendar2); } public static Calendar dateToCalendar(Date dt) { GregorianCalendar gc = new GregorianCalendar(); gc.setTime(dt); return gc; } }