Browse Source

tbel fix_bug tbDate delete String... options

pull/9778/head
nick 3 years ago
parent
commit
c14fe5b2cd
  1. 20
      common/script/script-api/src/main/java/org/thingsboard/script/api/tbel/TbDate.java

20
common/script/script-api/src/main/java/org/thingsboard/script/api/tbel/TbDate.java

@ -26,7 +26,6 @@ import java.text.SimpleDateFormat;
import java.time.Instant; import java.time.Instant;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.OffsetDateTime;
import java.time.ZoneId; import java.time.ZoneId;
import java.time.ZoneOffset; import java.time.ZoneOffset;
import java.time.ZonedDateTime; import java.time.ZonedDateTime;
@ -55,11 +54,11 @@ public class TbDate implements Serializable, Cloneable {
} }
public TbDate(String s) { public TbDate(String s) {
this.instant = parseInstant(s); this.instant = parseInstant(s, null, Locale.getDefault().toLanguageTag());
} }
public TbDate(String s, String pattern) { public TbDate(String s, String pattern) {
this.instant = parseInstant(s, pattern); this.instant = parseInstant(s, pattern, Locale.getDefault().toLanguageTag());
} }
public TbDate(String s, String pattern, String locale) { public TbDate(String s, String pattern, String locale) {
@ -488,11 +487,10 @@ public class TbDate implements Serializable, Cloneable {
} }
} }
private static Instant parseInstant(String s, String... options) { private static Instant parseInstant(String s, String pattern, String localeStr) {
Locale locale = options.length > 1 ? Locale.forLanguageTag( options[1]) : Locale.getDefault(); DateTimeFormatter formatter;
DateTimeFormatter formatter = null; if (pattern != null) {
if (options.length > 0) { formatter = DateTimeFormatter.ofPattern(pattern, Locale.forLanguageTag(localeStr));
formatter = DateTimeFormatter.ofPattern(options[0], locale);
} else if (s.length() > 0 && Character.isDigit(s.charAt(0))) { } else if (s.length() > 0 && Character.isDigit(s.charAt(0))) {
// assuming "2007-12-03T10:15:30.00Z" UTC instant // assuming "2007-12-03T10:15:30.00Z" UTC instant
// assuming "2007-12-03T10:15:30.00" ZoneId.systemDefault() instant // assuming "2007-12-03T10:15:30.00" ZoneId.systemDefault() instant
@ -509,9 +507,9 @@ public class TbDate implements Serializable, Cloneable {
return Instant.from(formatter.parse(s)); return Instant.from(formatter.parse(s));
} catch (Exception ex) { } catch (Exception ex) {
try { try {
if (options.length > 0) { if (pattern != null) {
String zoneIdStr = options.length > 3 ? options[2] : ZoneId.systemDefault().getId(); String zoneIdStr = ZoneId.systemDefault().getId();
return parseInstant(s, options[0], locale.getLanguage(), zoneIdStr); return parseInstant(s, pattern, localeStr, zoneIdStr);
} else if (s.length() > 0 && Character.isDigit(s.charAt(0))) { } else if (s.length() > 0 && Character.isDigit(s.charAt(0))) {
long timeMS = parse(s); long timeMS = parse(s);
if (timeMS != -1) { if (timeMS != -1) {

Loading…
Cancel
Save