nc.noumea.mairie.organigramme.core.utility.DateUtil.java Source code

Java tutorial

Introduction

Here is the source code for nc.noumea.mairie.organigramme.core.utility.DateUtil.java

Source

package nc.noumea.mairie.organigramme.core.utility;

/*
 * #%L
 * Logiciel de Gestion des Organigrammes de la Ville de Nouma
 * $Id:$
 * $HeadURL:$
 * %%
 * Copyright (C) 2015 Mairie de Nouma
 * %%
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as
 * published by the Free Software Foundation, either version 3 of the
 * License, or (at your option) any later version.
 * 
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public
 * License along with this program.  If not, see
 * <http://www.gnu.org/licenses/gpl-3.0.html>.
 * #L%
 */

import java.util.Date;

import org.joda.time.DateTime;
import org.joda.time.DateTimeZone;
import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;

public class DateUtil {

    private static final DateTimeFormatter YEAR_FORMATTER = dateTimeFormatterNCForPattern("yyyy");
    private static final DateTimeFormatter TIME_FORMATTER = dateTimeFormatterNCForPattern("HH:mm");
    private static final DateTimeFormatter TIME_FORMATTER_H = dateTimeFormatterNCForPattern("HH'h'mm");
    private static final DateTimeFormatter DATE_FORMATTER = dateTimeFormatterNCForPattern("dd/MM/yyyy");
    private static final DateTimeFormatter DATETIME_FORMATTER = dateTimeFormatterNCForPattern("dd/MM/yyyy HH:mm");
    private static final DateTimeFormatter DATETIME_FORMATTER_FRIENDLY = dateTimeFormatterNCForPattern(
            "dd/MM/yyyy '' HH'h'mm");
    private static final String TIMEZONE_NOUMEA = "Pacific/Noumea";

    private static DateTimeFormatter dateTimeFormatterNCForPattern(String pattern) {
        return DateTimeFormat.forPattern(pattern).withZone(DateTimeZone.forID(TIMEZONE_NOUMEA));
    }

    /**
     * Retourne la date reprsente au format dd/MM/yyyy, ex : 31/12/2013
     * 
     * @param date date
     * @return une reprsentation de la date en paramtre, ou "" si date est null
     */
    public static String formatDate(Date date) {
        return date == null ? "" : DATE_FORMATTER.print(new DateTime(date));
    }

    /**
     * Retourne la partie heure d'une date au format HH:mm, ex : "23:59"
     * 
     * @param date date
     * @return une reprsentation de la partie heure de la date en paramtre, ou "" si date est null
     */
    public static String formatHeureMinute(Date date) {
        return date == null ? "" : TIME_FORMATTER.print(new DateTime(date));
    }

    /**
     * Retourne la partie heure d'une date au format HHhmm, ex : "23h59"
     * 
     * @param date date
     * @return une reprsentation de la partie heure de la date en paramtre, ou "" si date est null
     */
    public static String formatHeureMinuteH(Date date) {
        return date == null ? "" : TIME_FORMATTER_H.print(new DateTime(date));
    }

    /**
     * Retourne la date reprsente au format yyyy, ex : 2014
     * 
     * @param date date
     * @return une reprsentation de la date en paramtre, ou "" si date est null
     */
    public static String formatYear(Date date) {
        if (date == null) {
            return "";
        }
        return YEAR_FORMATTER.print(new DateTime(date));
    }

    /**
     * Retourne la date/heure reprsente au format dd/MM/yyyy HH:mm, ex : 31/12/2013 23:59
     * 
     * @param date date
     * @return une reprsentation de la date en paramtre, ou "" si date est null
     */
    public static String formatDateTime(Date date) {
        if (date == null) {
            return "";
        }
        return DATETIME_FORMATTER.print(new DateTime(date));
    }

    /**
     * Retourne la date/heure reprsente au format dd/MM/yyyy  HH'h'mm, ex : 31/12/2013  23h59
     * 
     * @param date date
     * @return une reprsentation de la date en paramtre, ou "" si date est null
     */
    public static String formatDateTimeFriendly(Date date) {
        if (date == null) {
            return "";
        }
        return DATETIME_FORMATTER_FRIENDLY.print(new DateTime(date));
    }

    /**
     * Retoure une reprsentation de la date
     * @param date date concerne
     * @return exemple : "7 janvier 2014", "" si la date en entre est null
     */
    public static String formatDateAvecMoisEnTexte(Date date) {
        if (date == null) {
            return "";
        }
        DateTime dateTime = new DateTime(date);
        return dateTime.getDayOfMonth() + " " + libelleMois(dateTime.getMonthOfYear()) + " " + dateTime.getYear();
    }

    /**
     * Retourne une chane d'horodatage de la date courante, pratique pour suffixer le nom des fichiers gnrs notamment.
     * @return horodatage
     */
    public static String getHorodatage() {
        return DateTime.now().toString("YYYYMMddHHmmss"); // #5784
    }

    public static DateTime debutJournee(DateTime d) {
        return d.withHourOfDay(0).withMinuteOfHour(0).withSecondOfMinute(0).withMillisOfSecond(0);
    }

    public static Date debutJournee(Date d) {
        return debutJournee(new DateTime(d)).toDate();
    }

    public static DateTime aujourdhui00h00DateTime() {
        return debutJournee(new DateTime());
    }

    public static Date aujourdhui00h00() {
        return aujourdhui00h00DateTime().toDate();
    }

    public static Date parseDateTime(String str) {
        if (str == null) {
            return null;
        }
        return DATETIME_FORMATTER.parseDateTime(str).toDate();
    }

    public static Date parseDate(String str) {
        if (str == null) {
            return null;
        }
        return DATE_FORMATTER.parseDateTime(str).toDate();
    }

    /**
     * Indique si date 1 est suprieur  date 2 (et les 2 non null).
     * 
     * @param date1 date qu'on souhaite comparer avec date2
     * @param date2 date compare
     * @return true si date1 et date2 non null, et date1 suprieur date2
     */
    public static boolean isNotNullAndAfter(Date date1, Date date2) {
        if (date1 == null || date2 == null) {
            return false;
        }
        return date1.after(date2);
    }

    public static boolean isNotNullAndAfterOrEquals(Date date1, Date date2) {
        if (date1 == null || date2 == null) {
            return false;
        }
        return date1.after(date2) || date1.equals(date2);
    }

    /**
     * Indique si date 1 est suprieur  date 2 + nombreMois mois (et les 2 dates non null).
     * 
     * @param date1 date qu'on souhaite comparer avec date2
     * @param date2 date compare
     * @param nombreMois nombreMois
     * @return true si date1 et date2 non null, et date1 suprieur  date2 + nombreMois mois
     */
    public static boolean isNotNullAndAfterNMonth(Date date1, Date date2, int nombreMois) {
        if (date1 == null || date2 == null) {
            return false;
        }
        DateTime dateTime1 = new DateTime(date1);
        DateTime dateTime2 = new DateTime(date2);
        return dateTime1.isAfter(dateTime2.plusMonths(nombreMois));
    }

    private static final String[] LISTE_MOIS = new String[] { "janvier", "fvrier", "mars", "avril", "mai", "juin",
            "juillet", "aot", "septembre", "octobre", "novembre", "dcembre" };

    /**
     * @param monthOfYear entre 1 et 12
     * @return le libell du mois correspondant  la date
     */
    public static String libelleMois(int monthOfYear) {
        if (monthOfYear < 1 || monthOfYear > 12) {
            throw new IllegalArgumentException("mois en dehors de l'intervalle [1;12] : " + monthOfYear);
        }
        return LISTE_MOIS[monthOfYear - 1];
    }

    public static int compare(Date date1, Date date2) {
        if (date1 == null && date2 == null) {
            return 0; // null==null
        }

        if (date1 != null && date2 != null) {
            return date1.compareTo(date2);
        }

        if (date1 == null) {
            return -1; // null < date2
        }
        return 1; // date1 < null
    }
}