package com.towel.time; import java.text.SimpleDateFormat; import java.util.Date; /** * Componente para validacao de datas */ public class DateUtils { private static SimpleDateFormat formatter = new SimpleDateFormat( "dd/MM/yyyy"); /** * Verifica se string informada � uma data. * * @param String * - data * @return boolean */ public final static boolean isValidDate(String psDt) { Integer dia; Integer mes; Integer ano; Date dataConv; Date dataLimiteInf; Date dataLimiteSup; String a = psDt.trim(); if (a.length() != 10) return false; try { dia = new Integer(a.substring(0, 2)); mes = new Integer(a.substring(3, 5)); ano = new Integer(a.substring(6)); } catch (Exception ex) { return false; } if (mes.intValue() > 12) return false; if (mes.intValue() == 2) { if (ano.intValue() % 4 == 0) { if (dia.intValue() > 29) return false; } else if (dia.intValue() > 28) return false; } else if (dia.intValue() > 31) return false; else if (dia.intValue() > 30 && (mes.intValue() == 4 || mes.intValue() == 6 || mes.intValue() == 9 || mes.intValue() == 11)) return false; if (dia.intValue() > 31) return false; try { dataConv = formatter.parse(a); dataLimiteInf = formatter.parse("01/01/1900"); dataLimiteSup = formatter.parse("06/06/2079"); } catch (Exception e) { return false; } if (dataConv.after(dataLimiteSup)) return false; if (dataConv.before(dataLimiteInf)) return false; return true; } /** * Formate a String and return a Date. * * @param String * - date * @param String * - format * @return Date */ public final static Date parseDate(String dateString, String psFormato) { return parseDate(dateString, new SimpleDateFormat(psFormato)); } public final static Date parseDate(String dateString, SimpleDateFormat formatter) { try { return formatter.parse(dateString); } catch (Exception e) { return new Date(0); } } /** * Format a String with the defult formatter "dd/MM/yyyy" * * @param psDt * @return */ public final static Date parseDate(String psDt) { return parseDate(psDt, formatter); } public final static String format(Date pDt) { return formatter.format(pDt); } public final static String format(Date pDt, String psFormato) { return new SimpleDateFormat(psFormato).format(pDt); } /** * Converte a data para MM/DD/YYYY * * @param String * - Data DD/MM/YYYY * @return Sting - Data MM/DD/YYYY */ public final static String textToMMDDYYYY(String pdata) { String aux = ""; if (!pdata.equals("__/__/____") && !pdata.equals("")) aux = pdata.substring(3, 5) + "/" + pdata.substring(0, 2) + "/" + pdata.substring(6); return aux; } public static long msDate(Date pData) { return (pData.getTime() + (long) 2209154400000L) / 1000 / 60 / 60 / 24; } public static long msDate(String pData) { Date d = parseDate(pData); return (d.getTime() + (long) 2209154400000L) / 1000 / 60 / 60 / 24; } /** * Metodo para gravar campos do tipo datetime no sql no formato MM/dd/yyyy * HH:mm:ss:SSS com a data atual */ public static String getDateTime() { java.text.SimpleDateFormat formatador = new java.text.SimpleDateFormat( "yyyy/MM/dd HH:mm:ss:SSS"); java.util.Date x = new java.util.Date(); return formatador.format(x); } public static String getDateTimeSegundos() { java.text.SimpleDateFormat formatador = new java.text.SimpleDateFormat( "dd/MM/yyyy HH:mm:ss"); java.util.Date x = new java.util.Date(); return formatador.format(x); } }