All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.jrimum.utilix.Dates Maven / Gradle / Ivy

Go to download

This is a fork and merge from JRimum ( http://www.jrimum.org ), - Bopepo: https://github.com/jrimum/bopepo - Texgit: https://github.com/jrimum/texgit - Valia: https://github.com/jrimum/vallia - Utilix: https://github.com/jrimum/utilix - Domkee: https://github.com/jrimum/domkee For Brazillian Boleto Payment Method. So much thanks for original authors: Gilmar P. S. L, Misael Barreto and Rômulo Augusto.

The newest version!
/*
 * Copyright 2008 JRimum Project
 * 
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
 * use this file except in compliance with the License. You may obtain a copy of
 * the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by
 * applicable law or agreed to in writing, software distributed under the
 * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
 * OF ANY KIND, either express or implied. See the License for the specific
 * language governing permissions and limitations under the License.
 * 
 * Created at: 30/03/2008 - 18:17:40
 * 
 * ================================================================================
 * 
 * Direitos autorais 2008 JRimum Project
 * 
 * Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode usar
 * esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma
 * cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que
 * haja exigência legal ou acordo por escrito, a distribuição de software sob
 * esta LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER
 * TIPO, sejam expressas ou tácitas. Veja a LICENÇA para a redação específica a
 * reger permissões e limitações sob esta LICENÇA.
 * 
 * Criado em: 30/03/2008 - 18:17:40
 * 
 */
package org.jrimum.utilix;

import static org.jrimum.utilix.Objects.isNotNull;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

import org.apache.commons.lang3.time.DateUtils;

/**
 * 

* Serviços utilitários relacionados a manipulação de Objetos * Date, Calendar, GregorianCalendar. *

* * @author Gilmar P.S.L * @author Misael Barreto * @author Rômulo Augusto * @author Nordeste Fomento * Mercantil * * @since 0.2 * * @version 0.2 */ public final class Dates { /** *

* Representa uma data inexistente, pode ser usada em casos que não se pode * usar null [ é obtida da seguinte forma: * Calendar.set(1, 0, 1) ] *

*/ private static final Date DATE_NULL; static { Calendar calendar = Calendar.getInstance(); calendar.set(1, 0, 1); calendar.setLenient(false); DATE_NULL = DateUtils.truncate(calendar.getTime(), Calendar.YEAR); } /** * Utility class pattern: classe não instanciável * * @throws IllegalStateException Caso haja alguma tentativa de utilização * deste construtor. */ public static final DateFormat FORMAT_YYMMDD = new SimpleDateFormat( "yyMMdd"); /** *

* Formatador de datas no padrão yyyyMMdd. *

*/ public static final DateFormat FORMAT_YYYYMMDD = new SimpleDateFormat( "yyyyMMdd"); private Dates() { Exceptions.throwIllegalStateException("Instanciação não permitida!"); } /** *

* Retorna uma data inexistente, pode ser usada em casos que não se pode * usar null [ é obtida da seguinte forma: * Calendar.set(1, 0, 1) ] *

* * @return data invalida - 01/01/0001 */ public static Date invalidDate() { return (Date) DATE_NULL.clone(); } /** *

* Compara uma dada data qualquer com a data invalida 01/01/0001. *

* * @param date - Data qualquer * * @return igualdade - Se igual a data inválida */ public static boolean equalsInvalidDate(Date date) { if (date == null) { return false; } else { return (DATE_NULL.compareTo(date) == 0); } } /** *

* Calcula a diferença de dias entre duas datas. O resultado é modular, ou * seja, maior ou igual a zero, logo a data final não precisa ser * necessariamente maior que a data inicial. *

* * @param dataInicial - data inicial do intervalo. * @param dataFinal - data final do intervalo. * @return número(módulo) de dias entre as datas. * * @throws IllegalArgumentException Caso pelo menos uma das duas datas seja * null. * @since 0.2 */ public static long calculeDiferencaEmDias(final Date dataInicial, final Date dataFinal) { long fator = 0; Date dataInicialTruncada, dataFinalTruncada; if (isNotNull(dataInicial) && isNotNull(dataFinal)) { dataInicialTruncada = DateUtils.truncate(dataInicial, Calendar.DATE); dataFinalTruncada = DateUtils.truncate(dataFinal, Calendar.DATE); fator = ((dataFinalTruncada.getTime() - dataInicialTruncada.getTime()) / DateUtils.MILLIS_PER_DAY); if (fator < 0) { fator *= -1; } } else { Exceptions.throwIllegalArgumentException("A data inicial [" + dataInicial + "] e a data final [" + dataFinal + "] " + "não podem ter valor 'null'."); } return fator; } /** *

* Converte um objeto String em um objeto * java.util.Date a partir do formato de data especificado. *

*

* Utiliza a sobrecarca * parse(String dateAsString, String dateFormat) para realizar * a conversão. *

* * @param dateAsString - um valor de data em forma de String. * @param dateFormat - formato de data em forma de String. * @return Objeto java.util.Date convertido a partir do objeto * String * * @throws IllegalArgumentException caso o objeto String não * seja um valor válido de data suportado pelo formato. * @since 0.2 */ public static Date parse(String dateAsString, String dateFormat) { if (dateFormat == null) { throw new NullPointerException("O formato da data não pode ter valor [null]."); } return parse(dateAsString, new SimpleDateFormat(dateFormat)); } /** *

* Converte um objeto String em um objeto * java.util.Date através do objeto * java.text.DateFormat especificado. *

* * @param dateAsString - um valor de data em forma de String. * @param dateFormat - formatador para objetos java.util.Date. * @return Objeto java.util.Date convertido a partir do objeto * String * * @throws IllegalArgumentException caso o objeto String não * seja um valor válido de data suportado pelo formatador. * @since 0.2 */ public static Date parse(String dateAsString, DateFormat dateFormat) { Date date = null; if (dateAsString == null) { throw new NullPointerException("A String a ser convertida não pode ter valor [null]."); } if (dateFormat == null) { throw new NullPointerException("O formatador não pode ter valor [null]."); } try { date = dateFormat.parse(dateAsString); } catch (ParseException e) { String msg = "A String [" + dateAsString + "] deve ser uma data válida no formato"; if (dateFormat instanceof SimpleDateFormat) { SimpleDateFormat sdf = (SimpleDateFormat) dateFormat; msg += " [" + sdf.toPattern() + "]."; } else { msg += " especificado."; } IllegalArgumentException iae = new IllegalArgumentException(msg); iae.initCause(e); throw iae; } return date; } /** *

* Retorna um objeto java.util.Date somente com a informação do * dia, mes e ano. A informação sobre hora, minuto, segundo e millesegundos * é zerada. Isto é altamente recomendado em rotinas nas quais datas são * comparadas. *

* * @param date - um data em forma de java.util.Date. * * @return Objeto java.util.Date truncado a partir do objeto * java.util.Date informado como parâmetro. * * @throws NullPointerException Caso o objeto java.util.Date * esteja nulo * @since 0.3 */ public static Date truncarData(Date date) { if (date == null) { throw new NullPointerException("O data não pode ser nula. Impossível realizar o truncamento da data."); } return DateUtils.truncate(date, Calendar.DATE); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy