This is an automated email from the ASF dual-hosted git repository.
ahuber pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git
The following commit(s) were added to refs/heads/master by this push:
new bd83cde4d8 ISIS-3105: keep nano-seconds when converting temporals to
string
bd83cde4d8 is described below
commit bd83cde4d8a18abce949b5d5a7c71144f24c31d5
Author: Andi Huber <[email protected]>
AuthorDate: Tue Aug 2 12:06:31 2022 +0200
ISIS-3105: keep nano-seconds when converting temporals to string
---
.../apache/isis/commons/internal/base/_Times.java | 32 ++++++++++++++++++----
1 file changed, 26 insertions(+), 6 deletions(-)
diff --git
a/commons/src/main/java/org/apache/isis/commons/internal/base/_Times.java
b/commons/src/main/java/org/apache/isis/commons/internal/base/_Times.java
index 090c43bafe..9363389eba 100644
--- a/commons/src/main/java/org/apache/isis/commons/internal/base/_Times.java
+++ b/commons/src/main/java/org/apache/isis/commons/internal/base/_Times.java
@@ -60,6 +60,7 @@ public final class _Times {
public static final DateTimeFormatter
DEFAULT_LOCAL_DATETIME_FORMATTER_WITH_MILLIS =
DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS");
+
/**
* Returns duration between {@code startedAt} and {@code completedAt} in
<i>seconds</i>,
* to 3 decimal places.
@@ -77,13 +78,32 @@ public final class _Times {
// -- TEMPORAL TO STRING CONVERTERS
+ private static final DateTimeFormatter OFFSETTIME_DATASTORE_FORMATTER =
+ DateTimeFormatter.ofPattern("HH:mm:ss.SSSSSSSSS XXX");
+
+ private static final DateTimeFormatter OFFSETTIME_DATASTORE_PARSER =
+ DateTimeFormatter.ofPattern("HH:mm:ss[.SSSSSSSSS] [XXX][X]");
+
+ private static final DateTimeFormatter OFFSETDATETIME_DATASTORE_FORMATTER =
+ DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSSSSSSSS XXX");
+
+ private static final DateTimeFormatter OFFSETDATETIME_DATASTORE_PARSER =
+ DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss[.SSSSSSSSS]
[XXX][X]");
+
+ private static final DateTimeFormatter ZONEDDATETIME_DATASTORE_FORMATTER =
+ DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSSSSSSSS V");
+
+ private static final DateTimeFormatter ZONEDDATETIME_DATASTORE_PARSER =
+ DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss[.SSSSSSSSS] [V]");
+
+
/**
* Returns a {@link String} representing given temporal suitable for the
data-store.
*/
@Nullable
public String enstringOffsetTime(final @Nullable OffsetTime temporal) {
return temporal != null
- ? temporal.format(DateTimeFormatter.ISO_OFFSET_TIME)
+ ? temporal.format(OFFSETTIME_DATASTORE_FORMATTER)
: null;
}
@@ -93,7 +113,7 @@ public final class _Times {
@Nullable
public OffsetTime destringAsOffsetTime(final @Nullable String
datastoreValue) {
return _Strings.isNotEmpty(datastoreValue)
- ? OffsetTime.parse(datastoreValue,
DateTimeFormatter.ISO_OFFSET_TIME)
+ ? OffsetTime.parse(datastoreValue, OFFSETTIME_DATASTORE_PARSER)
: null;
}
@@ -103,7 +123,7 @@ public final class _Times {
@Nullable
public String enstringOffsetDateTime(final @Nullable OffsetDateTime
temporal) {
return temporal != null
- ? temporal.format(DateTimeFormatter.ISO_OFFSET_DATE_TIME)
+ ? temporal.format(OFFSETDATETIME_DATASTORE_FORMATTER)
: null;
}
@@ -113,7 +133,7 @@ public final class _Times {
@Nullable
public OffsetDateTime destringAsOffsetDateTime(final @Nullable String
datastoreValue) {
return _Strings.isNotEmpty(datastoreValue)
- ? OffsetDateTime.parse(datastoreValue,
DateTimeFormatter.ISO_OFFSET_DATE_TIME)
+ ? OffsetDateTime.parse(datastoreValue,
OFFSETDATETIME_DATASTORE_PARSER)
: null;
}
@@ -123,7 +143,7 @@ public final class _Times {
@Nullable
public String enstringZonedDateTime(final @Nullable ZonedDateTime
temporal) {
return temporal != null
- ? temporal.format(DateTimeFormatter.ISO_ZONED_DATE_TIME)
+ ? temporal.format(ZONEDDATETIME_DATASTORE_FORMATTER)
: null;
}
@@ -133,7 +153,7 @@ public final class _Times {
@Nullable
public ZonedDateTime destringAsZonedDateTime(final @Nullable String
datastoreValue) {
return _Strings.isNotEmpty(datastoreValue)
- ? ZonedDateTime.parse(datastoreValue,
DateTimeFormatter.ISO_ZONED_DATE_TIME)
+ ? ZonedDateTime.parse(datastoreValue,
ZONEDDATETIME_DATASTORE_PARSER)
: null;
}