tbDate: comments3

This commit is contained in:
nick 2023-10-24 16:48:08 +03:00
parent dfb1200e95
commit 2046c4863f
2 changed files with 23 additions and 27 deletions

View File

@ -111,8 +111,8 @@ public class TbDate implements Serializable, Cloneable {
public String toDateString(String locale) { public String toDateString(String locale) {
return toDateString(locale, ZoneId.systemDefault().toString()); return toDateString(locale, ZoneId.systemDefault().toString());
} }
public String toDateString(String localeStr, String zoneStr) { public String toDateString(String localeStr, String optionsStr) {
return toLocaleTbString(localeStr, zoneStr, (locale, options) -> DateTimeFormatter.ofLocalizedDate(FormatStyle.FULL).withLocale(locale)); return toLocaleString(localeStr, optionsStr, (locale, options) -> DateTimeFormatter.ofLocalizedDate(FormatStyle.FULL).withLocale(locale));
} }
public String toTimeString() { public String toTimeString() {
return toTimeString(Locale.getDefault().getLanguage()); return toTimeString(Locale.getDefault().getLanguage());
@ -120,8 +120,8 @@ public class TbDate implements Serializable, Cloneable {
public String toTimeString(String locale) { public String toTimeString(String locale) {
return toTimeString(locale, ZoneId.systemDefault().toString()); return toTimeString(locale, ZoneId.systemDefault().toString());
} }
public String toTimeString(String localeStr, String zoneStr) { public String toTimeString(String localeStr, String optionsStr) {
return toLocaleTbString(localeStr, zoneStr, (locale, options) -> DateTimeFormatter.ofLocalizedTime(FormatStyle.FULL).withLocale(locale)); return toLocaleString(localeStr, optionsStr, (locale, options) -> DateTimeFormatter.ofLocalizedTime(FormatStyle.FULL).withLocale(locale));
} }
public String toISOString() { public String toISOString() {
@ -135,7 +135,7 @@ public class TbDate implements Serializable, Cloneable {
} }
public String toUTCString(String localeStr) { public String toUTCString(String localeStr) {
return toLocaleTbString(localeStr, zoneIdUTC.getId(), (locale, options) -> DateTimeFormatter.ofLocalizedDateTime(FormatStyle.FULL, FormatStyle.MEDIUM).withLocale(locale)); return toLocaleString(localeStr, zoneIdUTC.getId(), (locale, options) -> DateTimeFormatter.ofLocalizedDateTime(FormatStyle.FULL, FormatStyle.MEDIUM).withLocale(locale));
} }
public String toString() { public String toString() {
@ -146,8 +146,8 @@ public class TbDate implements Serializable, Cloneable {
return toString(locale, ZoneId.systemDefault().toString()); return toString(locale, ZoneId.systemDefault().toString());
} }
public String toString(String localeStr, String zoneStr) { public String toString(String localeStr, String optionsStr) {
return toLocaleTbString(localeStr, zoneStr, (locale, options) -> DateTimeFormatter.ofLocalizedDateTime(FormatStyle.FULL, FormatStyle.FULL).withLocale(locale)); return toLocaleString(localeStr, optionsStr, (locale, options) -> DateTimeFormatter.ofLocalizedDateTime(FormatStyle.FULL, FormatStyle.FULL).withLocale(locale));
} }
public String toISOZonedDateTimeString() { public String toISOZonedDateTimeString() {
return getZonedDateTime().toString(); return getZonedDateTime().toString();
@ -161,11 +161,11 @@ public class TbDate implements Serializable, Cloneable {
} }
public String toLocaleDateString(String localeStr) { public String toLocaleDateString(String localeStr) {
return toLocaleTbString(localeStr, ZoneId.systemDefault().toString(), (locale, options) -> DateTimeFormatter.ofLocalizedDate(FormatStyle.FULL).withLocale(locale)); return toLocaleString(localeStr, ZoneId.systemDefault().toString(), (locale, options) -> DateTimeFormatter.ofLocalizedDate(FormatStyle.FULL).withLocale(locale));
} }
public String toLocaleDateString(String localeStr, String optionsStr) { public String toLocaleDateString(String localeStr, String optionsStr) {
return toLocaleTbString(localeStr, optionsStr, (locale, options) -> DateTimeFormatter.ofLocalizedDate(options.getDateStyle()).withLocale(locale)); return toLocaleString(localeStr, optionsStr, (locale, options) -> DateTimeFormatter.ofLocalizedDate(options.getDateStyle()).withLocale(locale));
} }
public String toLocaleTimeString() { public String toLocaleTimeString() {
@ -173,15 +173,11 @@ public class TbDate implements Serializable, Cloneable {
} }
public String toLocaleTimeString(String localeStr) { public String toLocaleTimeString(String localeStr) {
return toLocaleTimeStringWithZoneId(localeStr, ZoneId.systemDefault().toString()); return toLocaleTimeString(localeStr, ZoneId.systemDefault().toString());
}
public String toLocaleTimeStringWithZoneId(String localeStr, String zoneStr) {
return toLocaleTbString(localeStr, zoneStr, (locale, options) -> DateTimeFormatter.ofLocalizedTime(options.getTimeStyle()).withLocale(locale));
} }
public String toLocaleTimeString(String localeStr, String optionsStr) { public String toLocaleTimeString(String localeStr, String optionsStr) {
return toLocaleTbString(localeStr, optionsStr, (locale, options) -> DateTimeFormatter.ofLocalizedTime(options.getTimeStyle()).withLocale(locale)); return toLocaleString(localeStr, optionsStr, (locale, options) -> DateTimeFormatter.ofLocalizedTime(options.getTimeStyle()).withLocale(locale));
} }
public String toLocaleString() { public String toLocaleString() {
@ -192,12 +188,12 @@ public class TbDate implements Serializable, Cloneable {
return toLocaleString(locale, ZoneId.systemDefault().toString()); return toLocaleString(locale, ZoneId.systemDefault().toString());
} }
public String toLocaleString(String localeStr, String zoneStr) { public String toLocaleString(String localeStr, String optionsStr) {
return toLocaleTbString(localeStr, zoneStr, (locale, options) -> DateTimeFormatter.ofLocalizedDateTime(options.getDateStyle(), options.getTimeStyle()).withLocale(locale)); return toLocaleString(localeStr, optionsStr, (locale, options) -> DateTimeFormatter.ofLocalizedDateTime(options.getDateStyle(), options.getTimeStyle()).withLocale(locale));
} }
public String toLocaleTbString(String localeStr, String optionsStr) { public String toLocaleTbString(String localeStr, String optionsStr) {
return toLocaleTbString(localeStr, optionsStr, (locale, options) -> { return toLocaleString(localeStr, optionsStr, (locale, options) -> {
String formatPattern = String formatPattern =
DateTimeFormatterBuilder.getLocalizedDateTimePattern( DateTimeFormatterBuilder.getLocalizedDateTimePattern(
options.getDateStyle(), options.getDateStyle(),
@ -208,7 +204,7 @@ public class TbDate implements Serializable, Cloneable {
}); });
} }
public String toLocaleTbString(String localeStr, String optionsStr, BiFunction<Locale, DateTimeFormatOptions, DateTimeFormatter> formatterBuilder) { public String toLocaleString(String localeStr, String optionsStr, BiFunction<Locale, DateTimeFormatOptions, DateTimeFormatter> formatterBuilder) {
Locale locale = StringUtils.isNotEmpty(localeStr) ? Locale.forLanguageTag(localeStr) : Locale.getDefault(); Locale locale = StringUtils.isNotEmpty(localeStr) ? Locale.forLanguageTag(localeStr) : Locale.getDefault();
DateTimeFormatOptions options = getDateFormattingOptions(optionsStr); DateTimeFormatOptions options = getDateFormattingOptions(optionsStr);
ZonedDateTime zdt = this.getInstant().atZone(options.getTimeZone().toZoneId()); ZonedDateTime zdt = this.getInstant().atZone(options.getTimeZone().toZoneId());
@ -221,13 +217,13 @@ public class TbDate implements Serializable, Cloneable {
return formatter.format(zdt); return formatter.format(zdt);
} }
private DateTimeFormatOptions getDateFormattingOptions(String options) { private DateTimeFormatOptions getDateFormattingOptions(String optionsStr) {
DateTimeFormatOptions opt = null; DateTimeFormatOptions opt = null;
if (StringUtils.isNotEmpty(options)) { if (StringUtils.isNotEmpty(optionsStr)) {
try { try {
opt = JacksonUtil.fromString(options, DateTimeFormatOptions.class); opt = JacksonUtil.fromString(optionsStr, DateTimeFormatOptions.class);
} catch (IllegalArgumentException iae) { } catch (IllegalArgumentException iae) {
opt = new DateTimeFormatOptions(options); opt = new DateTimeFormatOptions(optionsStr);
} }
} }
if (opt == null) { if (opt == null) {

View File

@ -765,10 +765,10 @@ class TbDateTest {
Assert.assertEquals("1975 Dec 31, Wed", d1.toDateString("UTC", "America/New_York")); Assert.assertEquals("1975 Dec 31, Wed", d1.toDateString("UTC", "America/New_York"));
Assert.assertEquals("Wednesday, December 31, 1975", d1.toDateString("en-US", "America/New_York")); Assert.assertEquals("Wednesday, December 31, 1975", d1.toDateString("en-US", "America/New_York"));
Assert.assertEquals("06:15:30", d1.toLocaleTimeStringWithZoneId("uk-UA", "Europe/Kyiv")); Assert.assertEquals("06:15:30", d1.toLocaleTimeString("uk-UA", "Europe/Kyiv"));
Assert.assertEquals("06:15:30", d1.toLocaleTimeStringWithZoneId("UTC", "Europe/Kyiv")); Assert.assertEquals("06:15:30", d1.toLocaleTimeString("UTC", "Europe/Kyiv"));
Assert.assertEquals("10:15:30 PM", d1.toLocaleTimeStringWithZoneId("en-US", "America/New_York")); Assert.assertEquals("10:15:30 PM", d1.toLocaleTimeString("en-US", "America/New_York"));
Assert.assertEquals("22:15:30", d1.toLocaleTimeStringWithZoneId("UTC", "America/New_York")); Assert.assertEquals("22:15:30", d1.toLocaleTimeString("UTC", "America/New_York"));
Assert.assertEquals("06:15:30 за східноєвропейським стандартним часом", d1.toTimeString("uk-UA", "Europe/Kyiv")); Assert.assertEquals("06:15:30 за східноєвропейським стандартним часом", d1.toTimeString("uk-UA", "Europe/Kyiv"));
Assert.assertEquals("06:15:30 Eastern European Time", d1.toTimeString("UTC", "Europe/Kyiv")); Assert.assertEquals("06:15:30 Eastern European Time", d1.toTimeString("UTC", "Europe/Kyiv"));