Author: tchemit Date: 2014-09-09 14:43:03 +0200 (Tue, 09 Sep 2014) New Revision: 2682 Url: http://forge.nuiton.org/projects/nuiton-utils/repository/revisions/2682 Log: fixes #3498: Add more methods on DateUtil Modified: trunk/src/main/java/org/nuiton/util/DateUtil.java Modified: trunk/src/main/java/org/nuiton/util/DateUtil.java =================================================================== --- trunk/src/main/java/org/nuiton/util/DateUtil.java 2014-08-26 17:32:49 UTC (rev 2681) +++ trunk/src/main/java/org/nuiton/util/DateUtil.java 2014-09-09 12:43:03 UTC (rev 2682) @@ -257,7 +257,7 @@ * @param beforeDate the first date of the period * @param afterDate the second date of the period * @return true if the current date is included between the two dates, - * false otherwise + * false otherwise * @see #between(Date, Date, Date) */ public static boolean currentPeriod(Date beforeDate, Date afterDate) { @@ -407,11 +407,11 @@ */ public static Date getYesterday(Date date) { Calendar cal = getDefaultCalendar(date); - if (cal.get(Calendar.MONTH)==Calendar.JANUARY && cal.get(Calendar.DAY_OF_MONTH)==1){ - cal.roll(Calendar.YEAR,false); + if (cal.get(Calendar.MONTH) == Calendar.JANUARY && cal.get(Calendar.DAY_OF_MONTH) == 1) { + cal.roll(Calendar.YEAR, false); } - if (cal.get(Calendar.DAY_OF_MONTH)==1) { - cal.roll(Calendar.MONTH,false); + if (cal.get(Calendar.DAY_OF_MONTH) == 1) { + cal.roll(Calendar.MONTH, false); } cal.roll(Calendar.DAY_OF_MONTH, false); return cal.getTime(); @@ -439,7 +439,7 @@ * * @param date any date * @return a date in the same week as given date, a monday. All field below - * (hours, secondes, ms) are zeroed. + * (hours, secondes, ms) are zeroed. */ public static Date truncateToDayOfWeek(Date date) { Calendar calendar = Calendar.getInstance(); @@ -451,4 +451,104 @@ calendar.set(Calendar.MILLISECOND, 0); return calendar.getTime(); } + + + /** + * Enleve les données des heures (hour, minute, second, milli = 0). + * + * @param date la date a modifier + * @return la date d'un jour + */ + public static Date getDay(Date date) { + Calendar calendar = Calendar.getInstance(); + calendar.setTime(date); + calendar.set(Calendar.MILLISECOND, 0); + calendar.set(Calendar.SECOND, 0); + calendar.set(Calendar.MINUTE, 0); + calendar.set(Calendar.HOUR_OF_DAY, 0); + date = calendar.getTime(); + return date; + } + + /** + * Positionne une date sur la fin d'un jour + * + * @param date la date a modifier + * @return la date d'un jour + */ + public static Date getEndOfDay(Date date) { + Calendar calendar = Calendar.getInstance(); + calendar.setTime(date); + calendar.set(Calendar.MILLISECOND, 999); + calendar.set(Calendar.SECOND, 59); + calendar.set(Calendar.MINUTE, 59); + calendar.set(Calendar.HOUR_OF_DAY, 23); + date = calendar.getTime(); + return date; + } + + /** + * Créer la date qui utilise le jour donné dans {@code day} et l'heure + * donnée dans {@code time}. + * + * @param day le jour à utiliser + * @param time l'heure a utiliser + * @return la date donnée avec l'heure courante + */ + public static Date getDateAndTime(Date day, Date time, boolean useSecond, boolean useMiliSecond) { + + Calendar calendar = Calendar.getInstance(); + + // recuperation de l'heure + calendar.setTime(time); + int h = calendar.get(Calendar.HOUR_OF_DAY); + int m = calendar.get(Calendar.MINUTE); + int s = useSecond ? calendar.get(Calendar.SECOND) : 0; + int ms = useMiliSecond ? calendar.get(Calendar.MILLISECOND) : 0; + + calendar.setTime(day); + + // appliquer l'heure + calendar.set(Calendar.HOUR_OF_DAY, h); + calendar.set(Calendar.MINUTE, m); + calendar.set(Calendar.SECOND, s); + calendar.set(Calendar.MILLISECOND, ms); + + return calendar.getTime(); + + } + + /** + * Créer la date qui utilise uniquement l'heure + * donnée dans {@code dayTime}. + * + * @param dayTime l'heure a utiliser + * @return la date donnée avec uniquement l'heure courante + */ + public static Date getTime(Date dayTime, boolean useSecond, boolean useMiliSecond) { + Calendar calendar = Calendar.getInstance(); + + // recuperation de l'heure + calendar.setTime(dayTime); + int h = calendar.get(Calendar.HOUR_OF_DAY); + int m = calendar.get(Calendar.MINUTE); + int s = calendar.get(Calendar.SECOND); + int ms = calendar.get(Calendar.MILLISECOND); + + + // on part d'une date vide + calendar.setTimeInMillis(0); + + // appliquer l'heure + calendar.set(Calendar.HOUR_OF_DAY, h); + calendar.set(Calendar.MINUTE, m); + if (useSecond) { + calendar.set(Calendar.SECOND, s); + } + if (useMiliSecond) { + calendar.set(Calendar.MILLISECOND, ms); + } + + return calendar.getTime(); + } }