Skip to content

Commit

Permalink
feat: supported timestamp in data formatting
Browse files Browse the repository at this point in the history
  • Loading branch information
lvca committed Apr 30, 2024
1 parent 4e58b82 commit 92f7b92
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ public Object execute(final Object iThis, final Identifiable iCurrentRecord, fin
if (iParams.length == 0 || iParams[0] == null)
date = LocalDateTime.now();
else if (iParams[0] instanceof Number)
date = DateUtils.millisToLocalDateTime(((Number) iParams[0]).longValue());
date = DateUtils.millisToLocalDateTime(((Number) iParams[0]).longValue(), null);
else if (iParams[0] instanceof String) {
try {
final String dateAsString = (String) iParams[0];
Expand Down
16 changes: 11 additions & 5 deletions engine/src/main/java/com/arcadedb/utility/DateUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -335,21 +335,27 @@ else if (obj instanceof LocalDateTime || obj instanceof ZonedDateTime || obj ins
return highestPrecision;
}

public static LocalDateTime millisToLocalDateTime(final long millis) {
return Instant.ofEpochMilli(millis).atZone(ZoneId.systemDefault()).toLocalDateTime();
public static LocalDateTime millisToLocalDateTime(final long millis, final String timeZone) {
if (timeZone == null)
return Instant.ofEpochMilli(millis).atZone(ZoneId.systemDefault()).toLocalDateTime();
return Instant.ofEpochMilli(millis).atZone(ZoneId.of(timeZone)).toLocalDateTime();
}

public static LocalDate millisToLocalDate(final long millis) {
return LocalDate.ofInstant(Instant.ofEpochMilli(millis), ZoneId.systemDefault());
}

public static String format(final Object obj, final String format) {
return format(obj, format, null);
}

public static String format(final Object obj, final String format, final String timeZone) {
if (obj instanceof Number)
return getFormatter(format).format(millisToLocalDateTime(((Number) obj).longValue()));
return getFormatter(format).format(millisToLocalDateTime(((Number) obj).longValue(), timeZone));
else if (obj instanceof Date)
return getFormatter(format).format(millisToLocalDateTime(((Date) obj).getTime()));
return getFormatter(format).format(millisToLocalDateTime(((Date) obj).getTime(), timeZone));
else if (obj instanceof Calendar)
return getFormatter(format).format(millisToLocalDateTime(((Calendar) obj).getTimeInMillis()));
return getFormatter(format).format(millisToLocalDateTime(((Calendar) obj).getTimeInMillis(), timeZone));
else if (obj instanceof TemporalAccessor)
return getFormatter(format).format((TemporalAccessor) obj);
return null;
Expand Down

0 comments on commit 92f7b92

Please sign in to comment.