TimeUtil.fullDateFr() method updated

This commit is contained in:
Marc Baloup 2024-02-10 23:28:25 +01:00
parent ece1bc70bf
commit eb72633dd8

View File

@ -3,6 +3,7 @@ package fr.pandacube.lib.util;
import java.time.Instant; import java.time.Instant;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.time.format.FormatStyle;
import java.util.Arrays; import java.util.Arrays;
import java.util.Calendar; import java.util.Calendar;
import java.util.Comparator; import java.util.Comparator;
@ -30,6 +31,7 @@ public class TimeUtil {
private static final DateTimeFormatter cmpMonthFormatter = DateTimeFormatter.ofPattern("MMM", Locale.FRENCH); private static final DateTimeFormatter cmpMonthFormatter = DateTimeFormatter.ofPattern("MMM", Locale.FRENCH);
private static final DateTimeFormatter monthFormatter = DateTimeFormatter.ofPattern("MMMM", Locale.FRENCH); private static final DateTimeFormatter monthFormatter = DateTimeFormatter.ofPattern("MMMM", Locale.FRENCH);
private static final DateTimeFormatter yearFormatter = DateTimeFormatter.ofPattern("uuuu", Locale.FRENCH); private static final DateTimeFormatter yearFormatter = DateTimeFormatter.ofPattern("uuuu", Locale.FRENCH);
private static final DateTimeFormatter compactDateFormatter = DateTimeFormatter.ofLocalizedDate(FormatStyle.SHORT).withLocale(Locale.FRENCH);
private static final DateTimeFormatter HMSFormatter = DateTimeFormatter.ofPattern("HH:mm:ss", Locale.FRENCH); private static final DateTimeFormatter HMSFormatter = DateTimeFormatter.ofPattern("HH:mm:ss", Locale.FRENCH);
private static final DateTimeFormatter HMFormatter = DateTimeFormatter.ofPattern("HH:mm", Locale.FRENCH); private static final DateTimeFormatter HMFormatter = DateTimeFormatter.ofPattern("HH:mm", Locale.FRENCH);
@ -152,7 +154,7 @@ public class TimeUtil {
} }
} }
return fullDateFr(time, displayPrecision, true, compactWords); return fullDateFr(time, displayPrecision, true, compactWords, false);
} }
@ -212,13 +214,31 @@ public class TimeUtil {
* *
* @param timestamp the time to represent in the returned string. * @param timestamp the time to represent in the returned string.
* @param showSeconds if the returned string should include seconds (true) or not (false). To have more control * @param showSeconds if the returned string should include seconds (true) or not (false). To have more control
* over the precision, call {@link #fullDateFr(long, DisplayPrecision, boolean, boolean)}. * over the precision, call {@link #fullDateFr(long, DisplayPrecision, boolean, boolean, boolean)}.
* @param showWeekday true to show the week day, false otherwise. * @param showWeekday true to show the week day, false otherwise.
* @param compactWords true to use compact words, false to use full words. * @param compactWords true to use compact words, false to use full words.
* @return a string representation of the date (and eventually day time) of the provided timestamp. * @return a string representation of the date (and eventually day time) of the provided timestamp.
*/ */
public static String fullDateFr(long timestamp, boolean showSeconds, boolean showWeekday, boolean compactWords) { public static String fullDateFr(long timestamp, boolean showSeconds, boolean showWeekday, boolean compactWords) {
return fullDateFr(timestamp, showSeconds ? DisplayPrecision.SECONDS : DisplayPrecision.MINUTES, showWeekday, compactWords); return fullDateFr(timestamp, showSeconds, showWeekday, compactWords, false);
}
/**
* Returns a string representation of the date (and eventually day time) of the provided timestamp.
* <p>
* <b>This method renders the text in French.</b>
*
* @param timestamp the time to represent in the returned string.
* @param showSeconds if the returned string should include seconds (true) or not (false). To have more control
* over the precision, call {@link #fullDateFr(long, DisplayPrecision, boolean, boolean, boolean)}.
* @param showWeekday true to show the week day, false otherwise.
* @param compactWords true to use compact words, false to use full words.
* @param compactDate true to use compact date (DD/MM/YYYY).
* @return a string representation of the date (and eventually day time) of the provided timestamp.
*/
public static String fullDateFr(long timestamp, boolean showSeconds, boolean showWeekday, boolean compactWords, boolean compactDate) {
return fullDateFr(timestamp, showSeconds ? DisplayPrecision.SECONDS : DisplayPrecision.MINUTES, showWeekday, compactWords, compactDate);
} }
/** /**
@ -230,17 +250,23 @@ public class TimeUtil {
* @param precision the {@link DisplayPrecision} fo the returned string. * @param precision the {@link DisplayPrecision} fo the returned string.
* @param showWeekday true to show the week day, false otherwise. * @param showWeekday true to show the week day, false otherwise.
* @param compactWords true to use compact words, false to use full words. * @param compactWords true to use compact words, false to use full words.
* @param compactDate true to use compact date (DD/MM/YYYY).
* @return a string representation of the date (and eventually day time) of the provided timestamp. * @return a string representation of the date (and eventually day time) of the provided timestamp.
*/ */
public static String fullDateFr(long timestamp, DisplayPrecision precision, boolean showWeekday, boolean compactWords) { public static String fullDateFr(long timestamp, DisplayPrecision precision, boolean showWeekday, boolean compactWords, boolean compactDate) {
LocalDateTime displayDateTime = toLocalDateTime(timestamp); LocalDateTime displayDateTime = toLocalDateTime(timestamp);
String ret = (showWeekday ? ((compactWords ? cmpDayOfWeekFormatter : dayOfWeekFormatter).format(displayDateTime) + " ") : "") String date = showWeekday ? ((compactWords ? cmpDayOfWeekFormatter : dayOfWeekFormatter).format(displayDateTime) + " ") : "";
+ dayOfMonthFormatter.format(displayDateTime) + " " if (compactDate) {
+ (compactWords ? cmpMonthFormatter : monthFormatter).format(displayDateTime) + " " date += dayOfMonthFormatter.format(displayDateTime) + " "
+ yearFormatter.format(displayDateTime); + (compactWords ? cmpMonthFormatter : monthFormatter).format(displayDateTime) + " "
+ yearFormatter.format(displayDateTime);
}
else {
date += compactDateFormatter.format(displayDateTime);
}
if (precision == DisplayPrecision.DAYS) if (precision == DisplayPrecision.DAYS)
return ret; return date;
return ret + " à " + dayTimeFr(timestamp, precision); return date + " à " + dayTimeFr(timestamp, precision);
} }
/** /**