tbDate: comments2

This commit is contained in:
nick 2023-10-24 16:11:00 +03:00
parent 69bcd8426e
commit dfb1200e95
2 changed files with 35 additions and 35 deletions

View File

@ -46,6 +46,9 @@ public class TbDate implements Serializable, Cloneable {
private static final ZoneId zoneIdUTC = ZoneId.of("UTC"); private static final ZoneId zoneIdUTC = ZoneId.of("UTC");
private static final Locale localeUTC = Locale.forLanguageTag("UTC"); private static final Locale localeUTC = Locale.forLanguageTag("UTC");
private static final DateTimeFormatter isoDateFormatter = DateTimeFormatter.ofPattern(
"yyyy-MM-dd[[ ]['T']HH:mm[:ss[.SSS]][ ][XXX][Z][z][VV][O]]").withZone(ZoneId.systemDefault());
public TbDate() { public TbDate() {
this.instant = Instant.now(); this.instant = Instant.now();
} }
@ -108,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 locale, String zoneStr) { public String toDateString(String localeStr, String zoneStr) {
return toLocaleDateString(locale, JacksonUtil.newObjectNode().put("dateStyle", FormatStyle.FULL.name()).put("timeZone", zoneStr).toString()); return toLocaleTbString(localeStr, zoneStr, (locale, options) -> DateTimeFormatter.ofLocalizedDate(FormatStyle.FULL).withLocale(locale));
} }
public String toTimeString() { public String toTimeString() {
return toTimeString(Locale.getDefault().getLanguage()); return toTimeString(Locale.getDefault().getLanguage());
@ -117,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 locale, String zoneStr) { public String toTimeString(String localeStr, String zoneStr) {
return toLocaleTbTimeString(locale, JacksonUtil.newObjectNode().put("timeStyle", FormatStyle.FULL.name()).put("timeZone", zoneStr).toString()); return toLocaleTbString(localeStr, zoneStr, (locale, options) -> DateTimeFormatter.ofLocalizedTime(FormatStyle.FULL).withLocale(locale));
} }
public String toISOString() { public String toISOString() {
@ -131,8 +134,8 @@ public class TbDate implements Serializable, Cloneable {
return toUTCString(localeUTC.getLanguage()); return toUTCString(localeUTC.getLanguage());
} }
public String toUTCString(String locale) { public String toUTCString(String localeStr) {
return toLocaleTbString(locale, JacksonUtil.newObjectNode().put("dateStyle", FormatStyle.FULL.name()).put("timeStyle", FormatStyle.MEDIUM.name()).put("timeZone", zoneIdUTC.getId()).toString()); return toLocaleTbString(localeStr, zoneIdUTC.getId(), (locale, options) -> DateTimeFormatter.ofLocalizedDateTime(FormatStyle.FULL, FormatStyle.MEDIUM).withLocale(locale));
} }
public String toString() { public String toString() {
@ -143,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 locale, String zoneStr) { public String toString(String localeStr, String zoneStr) {
return toLocaleTbString(locale, JacksonUtil.newObjectNode().put("dateStyle", FormatStyle.FULL.name()).put("timeStyle", FormatStyle.FULL.name()).put("timeZone", zoneStr).toString()); return toLocaleTbString(localeStr, zoneStr, (locale, options) -> DateTimeFormatter.ofLocalizedDateTime(FormatStyle.FULL, FormatStyle.FULL).withLocale(locale));
} }
public String toISOZonedDateTimeString() { public String toISOZonedDateTimeString() {
return getZonedDateTime().toString(); return getZonedDateTime().toString();
@ -157,8 +160,8 @@ public class TbDate implements Serializable, Cloneable {
return toLocaleDateString(localeUTC.getLanguage()); return toLocaleDateString(localeUTC.getLanguage());
} }
public String toLocaleDateString(String locale) { public String toLocaleDateString(String localeStr) {
return toLocaleDateString(locale, JacksonUtil.newObjectNode().put("dateStyle", FormatStyle.FULL.name()).put("timeZone", ZoneId.systemDefault().toString()).toString()); return toLocaleTbString(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) {
@ -170,14 +173,14 @@ public class TbDate implements Serializable, Cloneable {
} }
public String toLocaleTimeString(String localeStr) { public String toLocaleTimeString(String localeStr) {
return toLocaleTimeString(localeStr, ZoneId.systemDefault().toString()); return toLocaleTimeStringWithZoneId(localeStr, ZoneId.systemDefault().toString());
} }
public String toLocaleTimeString(String localeStr, String zoneStr) { public String toLocaleTimeStringWithZoneId(String localeStr, String zoneStr) {
return toLocaleTbTimeString(localeStr, JacksonUtil.newObjectNode().put("timeStyle", FormatStyle.MEDIUM.name()).put("timeZone", zoneStr).toString()); return toLocaleTbString(localeStr, zoneStr, (locale, options) -> DateTimeFormatter.ofLocalizedTime(options.getTimeStyle()).withLocale(locale));
} }
public String toLocaleTbTimeString(String localeStr, String optionsStr) { public String toLocaleTimeString(String localeStr, String optionsStr) {
return toLocaleTbString(localeStr, optionsStr, (locale, options) -> DateTimeFormatter.ofLocalizedTime(options.getTimeStyle()).withLocale(locale)); return toLocaleTbString(localeStr, optionsStr, (locale, options) -> DateTimeFormatter.ofLocalizedTime(options.getTimeStyle()).withLocale(locale));
} }
@ -189,8 +192,8 @@ public class TbDate implements Serializable, Cloneable {
return toLocaleString(locale, ZoneId.systemDefault().toString()); return toLocaleString(locale, ZoneId.systemDefault().toString());
} }
public String toLocaleString(String locale, String zoneStr) { public String toLocaleString(String localeStr, String zoneStr) {
return toLocaleTbString(locale, JacksonUtil.newObjectNode().put("dateStyle", FormatStyle.SHORT.name()).put("timeStyle", FormatStyle.MEDIUM.name()).put("timeZone", zoneStr).toString()); return toLocaleTbString(localeStr, zoneStr, (locale, options) -> DateTimeFormatter.ofLocalizedDateTime(options.getDateStyle(), options.getTimeStyle()).withLocale(locale));
} }
public String toLocaleTbString(String localeStr, String optionsStr) { public String toLocaleTbString(String localeStr, String optionsStr) {
@ -489,8 +492,6 @@ public class TbDate implements Serializable, Cloneable {
} }
} }
public static long parse(String value) { public static long parse(String value) {
DateTimeFormatter isoDateFormatter = DateTimeFormatter.ofPattern(
"yyyy-MM-dd[[ ]['T']HH:mm[:ss[.SSS]][ ][XXX][Z][z][VV][O]]").withZone(ZoneId.systemDefault());
try { try {
TemporalAccessor accessor = isoDateFormatter.parseBest(value, TemporalAccessor accessor = isoDateFormatter.parseBest(value,
ZonedDateTime::from, ZonedDateTime::from,

View File

@ -223,41 +223,41 @@ class TbDateTest {
Assert.assertNotNull(d.toLocaleTimeString()); Assert.assertNotNull(d.toLocaleTimeString());
Assert.assertNotNull(d.toLocaleTimeString("en-US")); Assert.assertNotNull(d.toLocaleTimeString("en-US"));
Assert.assertEquals("9:04:05 PM", d.toLocaleTbTimeString("en-US", "America/New_York")); Assert.assertEquals("9:04:05 PM", d.toLocaleTimeString("en-US", "America/New_York"));
Assert.assertEquals("오후 9:04:05", d.toLocaleTbTimeString("ko-KR", "America/New_York")); Assert.assertEquals("오후 9:04:05", d.toLocaleTimeString("ko-KR", "America/New_York"));
Assert.assertEquals("04:04:05", d.toLocaleTbTimeString( "uk-UA", "Europe/Kiev")); Assert.assertEquals("04:04:05", d.toLocaleTimeString( "uk-UA", "Europe/Kiev"));
Assert.assertEquals("9:04:05 م", d.toLocaleTbTimeString( "ar-EG", "America/New_York")); Assert.assertEquals("9:04:05 م", d.toLocaleTimeString( "ar-EG", "America/New_York"));
Assert.assertEquals("9:04:05 PM Eastern Daylight Time", d.toLocaleTbTimeString("en-US", JacksonUtil.newObjectNode() Assert.assertEquals("9:04:05 PM Eastern Daylight Time", d.toLocaleTimeString("en-US", JacksonUtil.newObjectNode()
.put("timeZone", "America/New_York") .put("timeZone", "America/New_York")
.put("timeStyle", "full") .put("timeStyle", "full")
.toString())); .toString()));
Assert.assertEquals("오후 9시 4분 5초 미 동부 하계 표준시", d.toLocaleTbTimeString("ko-KR", JacksonUtil.newObjectNode() Assert.assertEquals("오후 9시 4분 5초 미 동부 하계 표준시", d.toLocaleTimeString("ko-KR", JacksonUtil.newObjectNode()
.put("timeZone", "America/New_York") .put("timeZone", "America/New_York")
.put("timeStyle", "full") .put("timeStyle", "full")
.toString())); .toString()));
Assert.assertEquals("04:04:05 за східноєвропейським літнім часом", d.toLocaleTbTimeString("uk-UA", JacksonUtil.newObjectNode() Assert.assertEquals("04:04:05 за східноєвропейським літнім часом", d.toLocaleTimeString("uk-UA", JacksonUtil.newObjectNode()
.put("timeZone", "Europe/Kiev") .put("timeZone", "Europe/Kiev")
.put("timeStyle", "full") .put("timeStyle", "full")
.toString())); .toString()));
Assert.assertEquals("9:04:05 م التوقيت الصيفي الشرقي لأمريكا الشمالية", d.toLocaleTbTimeString("ar-EG", JacksonUtil.newObjectNode() Assert.assertEquals("9:04:05 م التوقيت الصيفي الشرقي لأمريكا الشمالية", d.toLocaleTimeString("ar-EG", JacksonUtil.newObjectNode()
.put("timeZone", "America/New_York") .put("timeZone", "America/New_York")
.put("timeStyle", "full") .put("timeStyle", "full")
.toString())); .toString()));
Assert.assertEquals("9:04:05 PM", d.toLocaleTbTimeString("en-US", JacksonUtil.newObjectNode() Assert.assertEquals("9:04:05 PM", d.toLocaleTimeString("en-US", JacksonUtil.newObjectNode()
.put("timeZone", "America/New_York") .put("timeZone", "America/New_York")
.put("pattern", "h:mm:ss a") .put("pattern", "h:mm:ss a")
.toString())); .toString()));
Assert.assertEquals("9:04:05 오후", d.toLocaleTbTimeString("ko-KR", JacksonUtil.newObjectNode() Assert.assertEquals("9:04:05 오후", d.toLocaleTimeString("ko-KR", JacksonUtil.newObjectNode()
.put("timeZone", "America/New_York") .put("timeZone", "America/New_York")
.put("pattern", "h:mm:ss a") .put("pattern", "h:mm:ss a")
.toString())); .toString()));
Assert.assertEquals("4:04:05 дп", d.toLocaleTbTimeString("uk-UA", JacksonUtil.newObjectNode() Assert.assertEquals("4:04:05 дп", d.toLocaleTimeString("uk-UA", JacksonUtil.newObjectNode()
.put("timeZone", "Europe/Kiev") .put("timeZone", "Europe/Kiev")
.put("pattern", "h:mm:ss a") .put("pattern", "h:mm:ss a")
.toString())); .toString()));
Assert.assertEquals("9:04:05 م", d.toLocaleTbTimeString("ar-EG", JacksonUtil.newObjectNode() Assert.assertEquals("9:04:05 م", d.toLocaleTimeString("ar-EG", JacksonUtil.newObjectNode()
.put("timeZone", "America/New_York") .put("timeZone", "America/New_York")
.put("pattern", "h:mm:ss a") .put("pattern", "h:mm:ss a")
.toString())); .toString()));
@ -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.toLocaleTimeString("uk-UA", "Europe/Kyiv")); Assert.assertEquals("06:15:30", d1.toLocaleTimeStringWithZoneId("uk-UA", "Europe/Kyiv"));
Assert.assertEquals("06:15:30", d1.toLocaleTimeString("UTC", "Europe/Kyiv")); Assert.assertEquals("06:15:30", d1.toLocaleTimeStringWithZoneId("UTC", "Europe/Kyiv"));
Assert.assertEquals("10:15:30 PM", d1.toLocaleTimeString("en-US", "America/New_York")); Assert.assertEquals("10:15:30 PM", d1.toLocaleTimeStringWithZoneId("en-US", "America/New_York"));
Assert.assertEquals("22:15:30", d1.toLocaleTimeString("UTC", "America/New_York")); Assert.assertEquals("22:15:30", d1.toLocaleTimeStringWithZoneId("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"));
@ -788,4 +788,3 @@ class TbDateTest {
Assert.assertEquals(d.getMilliseconds(), d.getUTCMilliseconds()); Assert.assertEquals(d.getMilliseconds(), d.getUTCMilliseconds());
} }
} }