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

org.jrimum.utilix.DateUtil 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.ObjectUtil.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;


/**
 * 
 * Esta classe tem a responsabilidade de prover 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 class DateUtil {
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 4339951860440604914L;

	/**
	 * Formatador de datas no padrão dd/MM/yyyy.
	 */
	public static final DateFormat FORMAT_DD_MM_YYYY = new SimpleDateFormat("dd/MM/yyyy");
	
	/**
	 * Formatador de datas no padrão ddMMyy.
	 */
	public static final DateFormat FORMAT_DDMMYY = new SimpleDateFormat("ddMMyy");
	
	/**
	 * Formatador de datas no padrão yyMMdd.
	 */
	public static final DateFormat FORMAT_YYMMDD = new SimpleDateFormat("yyMMdd");
	
	/**
	 * Representa uma data inexistente. Usada em casos que não se pode usar
	 * null.
	 * 
* É obtida da seguinte forma: new GregorianCalendar(1, 0, 1).getTime() */ public 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); } /** *

* Converte um objeto String em um objeto java.util.Date * no formato de data padrão brasileiro: dd/MM/yyyy. *

*

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

* * @param dateAsString - um valor 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. */ public static Date parse(String dateAsString) { return parse(dateAsString, FORMAT_DD_MM_YYYY); } /** *

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

*

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

* * @param dateAsString - um valor de data em forma de String. * @param dateFormat - formato de data * @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. */ 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. */ 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; } /** *

* 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. */ 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 { throw new IllegalArgumentException("A data inicial [" + dataInicial + "] e a data final [" + dataFinal + "] " + "não podem ter valor 'null'."); } return fator; } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy