From f5deeb39af379abf3e494f4954f3027621530028 Mon Sep 17 00:00:00 2001 From: Richard Koshak Date: Thu, 9 Nov 2023 15:28:26 -0700 Subject: [PATCH 1/9] Add timezone ID when parsing 8601 String, fix typo Signed-off-by: Richard Koshak --- time.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/time.js b/time.js index 3da2d3d36..104f9b639 100644 --- a/time.js +++ b/time.js @@ -90,13 +90,13 @@ function _parseISO8601 (isoStr) { LOCAL_DATE: /^(-?(?:[1-9][0-9]*)?[0-9]{4})-(1[0-2]|0[1-9])-(3[01]|0[1-9]|[12][0-9])$/, // YYYY-MM-DD LOCAL_TIME: /^\d{2}:\d{2}(:\d{2})?(\.\d+)?$/, // hh:mm or hh:mm:ss or hh:mm:ss.f LOCAL_DATE_TIME: /^(-?(?:[1-9][0-9]*)?[0-9]{4})-(1[0-2]|0[1-9])-(3[01]|0[1-9]|[12][0-9])T\d{2}:\d{2}(:\d{2})?(\.\d+)?$/, // LOCAL_DATE and LOCAL_TIME connected with "T" - ISO_8160_FULL: /^(-?(?:[1-9][0-9]*)?[0-9]{4})-(1[0-2]|0[1-9])-(3[01]|0[1-9]|[12][0-9])T(2[0-3]|[01][0-9]):([0-5][0-9])(:[0-5][0-9])?(\.\d+)?(Z|[+-]\d{2}(:\d{2})?)/ + ISO_8601_FULL: /^(-?(?:[1-9][0-9]*)?[0-9]{4})-(1[0-2]|0[1-9])-(3[01]|0[1-9]|[12][0-9])T(2[0-3]|[01][0-9]):([0-5][0-9])(:[0-5][0-9])?(\.\d+)?(Z|[+-]\d{2}(:\d{2})?)/ }; switch (true) { case REGEX.LOCAL_DATE.test(isoStr): return time.ZonedDateTime.of(time.LocalDate.parse(isoStr), time.LocalTime.MIDNIGHT, time.ZoneId.SYSTEM); case REGEX.LOCAL_TIME.test(isoStr): return time.ZonedDateTime.of(time.LocalDate.now(), time.LocalTime.parse(isoStr), time.ZoneId.SYSTEM); case REGEX.LOCAL_DATE_TIME.test(isoStr): return time.ZonedDateTime.of(time.LocalDateTime.parse(isoStr), time.ZoneId.SYSTEM); - case REGEX.ISO_8160_FULL.test(isoStr): return time.ZonedDateTime.parse(isoStr); + case REGEX.ISO_8601_FULL.test(isoStr): return time.ZonedDateTime.parse(isoStr).withZoneSameLocal(time.ZoneId.SYSTEM); } return null; } From 05ea4ef72b31bfa7cc26db8815bd1d52f0c3d3a1 Mon Sep 17 00:00:00 2001 From: Richard Koshak Date: Tue, 14 Nov 2023 15:00:10 -0700 Subject: [PATCH 2/9] Dual regex test Signed-off-by: Richard Koshak --- time.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/time.js b/time.js index 104f9b639..eba407257 100644 --- a/time.js +++ b/time.js @@ -90,13 +90,15 @@ function _parseISO8601 (isoStr) { LOCAL_DATE: /^(-?(?:[1-9][0-9]*)?[0-9]{4})-(1[0-2]|0[1-9])-(3[01]|0[1-9]|[12][0-9])$/, // YYYY-MM-DD LOCAL_TIME: /^\d{2}:\d{2}(:\d{2})?(\.\d+)?$/, // hh:mm or hh:mm:ss or hh:mm:ss.f LOCAL_DATE_TIME: /^(-?(?:[1-9][0-9]*)?[0-9]{4})-(1[0-2]|0[1-9])-(3[01]|0[1-9]|[12][0-9])T\d{2}:\d{2}(:\d{2})?(\.\d+)?$/, // LOCAL_DATE and LOCAL_TIME connected with "T" - ISO_8601_FULL: /^(-?(?:[1-9][0-9]*)?[0-9]{4})-(1[0-2]|0[1-9])-(3[01]|0[1-9]|[12][0-9])T(2[0-3]|[01][0-9]):([0-5][0-9])(:[0-5][0-9])?(\.\d+)?(Z|[+-]\d{2}(:\d{2})?)/ + ISO_8601_FULL: /^(-?(?:[1-9][0-9]*)?[0-9]{4})-(1[0-2]|0[1-9])-(3[01]|0[1-9]|[12][0-9])T(2[0-3]|[01][0-9]):([0-5][0-9])(:[0-5][0-9])?(\.\d+)?(Z|[+-]\d{2}(:\d{2})?\[[\w]*\])*\]?$/, // With Zone ID + ISO_8601_OFFSET: /^(-?(?:[1-9][0-9]*)?[0-9]{4})-(1[0-2]|0[1-9])-(3[01]|0[1-9]|[12][0-9])T(2[0-3]|[01][0-9]):([0-5][0-9])(:[0-5][0-9])?(\.\d+)?(Z|[+-]\d{2}(:\d{2})?)$/ // Offset only }; switch (true) { case REGEX.LOCAL_DATE.test(isoStr): return time.ZonedDateTime.of(time.LocalDate.parse(isoStr), time.LocalTime.MIDNIGHT, time.ZoneId.SYSTEM); case REGEX.LOCAL_TIME.test(isoStr): return time.ZonedDateTime.of(time.LocalDate.now(), time.LocalTime.parse(isoStr), time.ZoneId.SYSTEM); case REGEX.LOCAL_DATE_TIME.test(isoStr): return time.ZonedDateTime.of(time.LocalDateTime.parse(isoStr), time.ZoneId.SYSTEM); - case REGEX.ISO_8601_FULL.test(isoStr): return time.ZonedDateTime.parse(isoStr).withZoneSameLocal(time.ZoneId.SYSTEM); + case REGEX.ISO_8601_OFFSET.test(isoStr): return time.ZonedDateTime.parse(isoStr).withZoneSameLocal(time.ZoneId.SYSTEM); + case REGEX.ISO_8601_FULL.test(isoStr): return time.ZonedDateTime.parse(isoStr); } return null; } @@ -134,7 +136,7 @@ function _parseString (str) { // ISO8601 Time, Date, or DateTime string try { // Blockly compatibility with user input without the "T" - const newStr = /^(-?(?:[1-9][0-9]*)?[0-9]{4})-(1[0-2]|0[1-9])-(3[01]|0[1-9]|[12][0-9]) \d{2}:\d{2}/.test(str) ? str.replace(' ', 'T') : str; + const newStr = /^(-?(?:[1-9][0-9]*)?[0-9]{4})-(1[0-2]|0[1-9])-(3[01]|0[1-9]|[12][0-9]) \d{2}:\d{2}?\[[\w/]*\])*\]?/.test(str) ? str.replace(' ', 'T') : str; const zdt = _parseISO8601(newStr); if (zdt !== null) return zdt; } catch (e) { From c4cef005e0d9eb9757899d4a217eb4908f805576 Mon Sep 17 00:00:00 2001 From: Florian Hotze Date: Sat, 2 Dec 2023 01:00:07 +0100 Subject: [PATCH 3/9] Revert Blockly compat RegEx change Signed-off-by: Florian Hotze --- time.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/time.js b/time.js index eba407257..2b772d097 100644 --- a/time.js +++ b/time.js @@ -136,7 +136,7 @@ function _parseString (str) { // ISO8601 Time, Date, or DateTime string try { // Blockly compatibility with user input without the "T" - const newStr = /^(-?(?:[1-9][0-9]*)?[0-9]{4})-(1[0-2]|0[1-9])-(3[01]|0[1-9]|[12][0-9]) \d{2}:\d{2}?\[[\w/]*\])*\]?/.test(str) ? str.replace(' ', 'T') : str; + const newStr = /^(-?(?:[1-9][0-9]*)?[0-9]{4})-(1[0-2]|0[1-9])-(3[01]|0[1-9]|[12][0-9]) \d{2}:\d{2}/.test(str) ? str.replace(' ', 'T') : str; const zdt = _parseISO8601(newStr); if (zdt !== null) return zdt; } catch (e) { From c2972d2709c54098a33c273767bcfd5b7feeec0c Mon Sep 17 00:00:00 2001 From: Florian Hotze Date: Sat, 2 Dec 2023 01:28:16 +0100 Subject: [PATCH 4/9] Fix RegExes Signed-off-by: Florian Hotze --- time.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/time.js b/time.js index 2b772d097..c35d9fa2e 100644 --- a/time.js +++ b/time.js @@ -90,15 +90,15 @@ function _parseISO8601 (isoStr) { LOCAL_DATE: /^(-?(?:[1-9][0-9]*)?[0-9]{4})-(1[0-2]|0[1-9])-(3[01]|0[1-9]|[12][0-9])$/, // YYYY-MM-DD LOCAL_TIME: /^\d{2}:\d{2}(:\d{2})?(\.\d+)?$/, // hh:mm or hh:mm:ss or hh:mm:ss.f LOCAL_DATE_TIME: /^(-?(?:[1-9][0-9]*)?[0-9]{4})-(1[0-2]|0[1-9])-(3[01]|0[1-9]|[12][0-9])T\d{2}:\d{2}(:\d{2})?(\.\d+)?$/, // LOCAL_DATE and LOCAL_TIME connected with "T" - ISO_8601_FULL: /^(-?(?:[1-9][0-9]*)?[0-9]{4})-(1[0-2]|0[1-9])-(3[01]|0[1-9]|[12][0-9])T(2[0-3]|[01][0-9]):([0-5][0-9])(:[0-5][0-9])?(\.\d+)?(Z|[+-]\d{2}(:\d{2})?\[[\w]*\])*\]?$/, // With Zone ID - ISO_8601_OFFSET: /^(-?(?:[1-9][0-9]*)?[0-9]{4})-(1[0-2]|0[1-9])-(3[01]|0[1-9]|[12][0-9])T(2[0-3]|[01][0-9]):([0-5][0-9])(:[0-5][0-9])?(\.\d+)?(Z|[+-]\d{2}(:\d{2})?)$/ // Offset only + ISO_8601_FULL: /^(-?(?:[1-9][0-9]*)?[0-9]{4})-(1[0-2]|0[1-9])-(3[01]|0[1-9]|[12][0-9])T(2[0-3]|[01][0-9]):([0-5][0-9])(:[0-5][0-9])?(\.\d+)?(Z|[+-]\d{2}(:\d{2})?\[.*\])/, // with Zone ID + ISO_8601_OFFSET: /^(-?(?:[1-9][0-9]*)?[0-9]{4})-(1[0-2]|0[1-9])-(3[01]|0[1-9]|[12][0-9])T(2[0-3]|[01][0-9]):([0-5][0-9])(:[0-5][0-9])?(\.\d+)?(Z|[+-]\d{2}(:\d{2})$)/ // offset only }; switch (true) { case REGEX.LOCAL_DATE.test(isoStr): return time.ZonedDateTime.of(time.LocalDate.parse(isoStr), time.LocalTime.MIDNIGHT, time.ZoneId.SYSTEM); case REGEX.LOCAL_TIME.test(isoStr): return time.ZonedDateTime.of(time.LocalDate.now(), time.LocalTime.parse(isoStr), time.ZoneId.SYSTEM); case REGEX.LOCAL_DATE_TIME.test(isoStr): return time.ZonedDateTime.of(time.LocalDateTime.parse(isoStr), time.ZoneId.SYSTEM); - case REGEX.ISO_8601_OFFSET.test(isoStr): return time.ZonedDateTime.parse(isoStr).withZoneSameLocal(time.ZoneId.SYSTEM); case REGEX.ISO_8601_FULL.test(isoStr): return time.ZonedDateTime.parse(isoStr); + case REGEX.ISO_8601_OFFSET.test(isoStr): return time.ZonedDateTime.parse(isoStr).withZoneSameLocal(time.ZoneId.SYSTEM); } return null; } From d90abe24b452890eff9a30a50e6af3ac10cf017b Mon Sep 17 00:00:00 2001 From: Florian Hotze Date: Sat, 2 Dec 2023 01:28:23 +0100 Subject: [PATCH 5/9] Improve unit tests Signed-off-by: Florian Hotze --- test/time.spec.js | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/test/time.spec.js b/test/time.spec.js index 5195996ec..266fd2385 100644 --- a/test/time.spec.js +++ b/test/time.spec.js @@ -1,5 +1,5 @@ const time = require('../time'); -const { ZonedDateTime } = require('@js-joda/core'); +const { ZonedDateTime, ZoneId } = require('@js-joda/core'); jest.mock('../items', () => ({ Item: new Object() // eslint-disable-line no-new-object @@ -67,13 +67,9 @@ describe('time.js', () => { }); }); - describe('parses ISO DateTime with zone offset and/or time/zone', () => { + describe('parses ISO DateTime with zone offset and time zone', () => { it.each([ ['YYYY-MM-DDThh:mm:ss.f+HH:mm[SYSTEM]', '2016-03-18T12:38:23.561+01:00[SYSTEM]'], - ['YYYY-MM-DDThh:mm:ss.f+HH:mm', '2016-03-18T12:38:23.561+01:00'], - ['YYYY-MM-DDThh:mm:ss.f-HH:mm', '2016-03-18T12:38:23.56-04:30'], - ['YYYY-MM-DDThh:mm:ss.f+HHmm', '2016-03-18T12:38:23.561+0100'], - ['YYYY-MM-DDThh:mm:ss.f-HHmm', '2016-03-18T12:38:23.561-0430'], ['YYYY-MM-DDThh:mm:ssZ', '2022-12-24T18:30:35Z'], ['YYYY-MM-DDThh:mm:ss+HH:mm[timezone]', '2017-02-04T17:01:15.846+01:00[Europe/Paris]'], ['YYYY-MM-DDThh:mm:ss+HH:mm[timezone]', '2016-03-18T06:38:23.561-05:00[UTC-05:00]'] @@ -82,6 +78,19 @@ describe('time.js', () => { }); }); + describe('parses ISO DateTime with zone offset and without time zone and defaults to SYSTEM time zone', () => { + it.each([ + ['YYYY-MM-DDThh:mm:ss.f+HH:mm', '2016-03-18T12:38:23.561+01:00'], + ['YYYY-MM-DDThh:mm:ss.f-HH:mm', '2016-03-18T12:38:23.56-04:30'], + ['YYYY-MM-DDThh:mm:ss.f+HHmm', '2016-03-18T12:38:23.561+0100'], + ['YYYY-MM-DDThh:mm:ss.f-HHmm', '2016-03-18T12:38:23.561-0430'] + ])('accepts correct pattern %s', (pattern, isoStr) => { + const zdt = parseISO8601(isoStr); + expect(zdt).toBeInstanceOf(ZonedDateTime); + expect(zdt.zone()).toBe(ZoneId.SYSTEM); + }); + }); + describe('rejects wrong ISO pattern', () => { it.each([ ['hh:mm:ss,f', '18:00:00,4654'], From 932576760efdd574b49ca35db34bbd24e6b81c9d Mon Sep 17 00:00:00 2001 From: Florian Hotze Date: Sat, 2 Dec 2023 01:47:27 +0100 Subject: [PATCH 6/9] Set default zoneId for Items, JavaZDT and DateTimeType Signed-off-by: Florian Hotze --- time.js | 6 +++--- utils.js | 18 +++++++++++++++++- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/time.js b/time.js index c35d9fa2e..4214bb144 100644 --- a/time.js +++ b/time.js @@ -167,7 +167,7 @@ function _convertItem (item) { } else if (item.rawState instanceof StringType) { // String type Items return _parseString(item.state); } else if (item.rawState instanceof DateTimeType) { // DateTime Items - return utils.javaZDTToJsZDT(item.rawState.getZonedDateTime()); + return utils.javaZDTToJsZDTWithDefaultZoneSystem(item.rawState.getZonedDateTime()); } else if (item.rawState instanceof QuantityType) { // Number:Time type Items return _addQuantityType(item.rawState); } else { @@ -232,12 +232,12 @@ function toZDT (when) { // Java ZDT if (when instanceof javaZDT) { - return utils.javaZDTToJsZDT(when); + return utils.javaZDTToJsZDTWithDefaultZoneSystem(when); } // DateTimeType, extract the javaZDT and convert to time.ZDT if (when instanceof DateTimeType) { - return utils.javaZDTToJsZDT(when.getZonedDateTime()); + return utils.javaZDTToJsZDTWithDefaultZoneSystem(when.getZonedDateTime()); } // Quantity diff --git a/utils.js b/utils.js index 3b1db77db..124f79686 100644 --- a/utils.js +++ b/utils.js @@ -227,7 +227,7 @@ function javaInstantToJsInstant (instant) { } /** - * Convert Java ZonedDateTime to JS-Joda. + * Convert Java ZonedDateTime to JS-Joda ZonedDateTime. * * @memberOf utils * @param {JavaZonedDateTime} zdt {@link https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/ZonedDateTime.html java.time.ZonedDateTime} @@ -240,6 +240,21 @@ function javaZDTToJsZDT (zdt) { return time.ZonedDateTime.ofInstant(instant, zone); } +/** + * Convert Java ZonedDateTime to JS-Joda ZonedDateTime and default to SYSTEM timezone if not explicitly set. + * + * @memberOf utils + * @param {JavaZonedDateTime} zdt {@link https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/ZonedDateTime.html java.time.ZonedDateTime} + * @returns {time.ZonedDateTime} {@link https://js-joda.github.io/js-joda/class/packages/core/src/ZonedDateTime.js~ZonedDateTime.html JS-Joda ZonedDateTime} + */ +function javaZDTToJsZDTWithDefaultZoneSystem (zdt) { + const jsZDT = javaZDTToJsZDT(zdt); + if (/^[+-]*/.test(jsZDT.zone().toString())) { + return jsZDT.withZoneSameLocal(time.ZoneId.SYSTEM); + } + return jsZDT; +} + module.exports = { jsSetToJavaSet, jsArrayToJavaSet, @@ -254,5 +269,6 @@ module.exports = { isJsInstanceOfJava, javaInstantToJsInstant, javaZDTToJsZDT, + javaZDTToJsZDTWithDefaultZoneSystem, OPENHAB_JS_VERSION: VERSION }; From 59478d1d0f72f3a4a0d4e3c6cb542cd2714995f8 Mon Sep 17 00:00:00 2001 From: Florian Hotze Date: Sat, 2 Dec 2023 01:50:03 +0100 Subject: [PATCH 7/9] Update README Signed-off-by: Florian Hotze --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 664e5ba6f..72b058bb0 100644 --- a/README.md +++ b/README.md @@ -836,6 +836,7 @@ The following rules are used during the conversion: | `"kk:mm[:ss][ ]a"` (12 hour time) | today's date with the time indicated, the space between the time and am/pm and seconds are optional | `time.toZDT('1:23:45 PM');` | | [ISO 8601 Duration](https://en.wikipedia.org/wiki/ISO_8601#Durations) String | added to `now` | `time.toZDT('PT1H4M6.789S');` | +If no time zone is explicitly set, the system default time zone is used. When a type or string that cannot be handled is encountered, an error is thrown. #### `toToday()` From 72f433704203ab786678a3322ae18a84bfce790e Mon Sep 17 00:00:00 2001 From: Florian Hotze Date: Sat, 2 Dec 2023 01:50:16 +0100 Subject: [PATCH 8/9] Minor rewording Signed-off-by: Florian Hotze --- test/time.spec.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/time.spec.js b/test/time.spec.js index 266fd2385..a88be271a 100644 --- a/test/time.spec.js +++ b/test/time.spec.js @@ -67,7 +67,7 @@ describe('time.js', () => { }); }); - describe('parses ISO DateTime with zone offset and time zone', () => { + describe('parses ISO DateTime with zone offset and timezone', () => { it.each([ ['YYYY-MM-DDThh:mm:ss.f+HH:mm[SYSTEM]', '2016-03-18T12:38:23.561+01:00[SYSTEM]'], ['YYYY-MM-DDThh:mm:ssZ', '2022-12-24T18:30:35Z'], @@ -78,7 +78,7 @@ describe('time.js', () => { }); }); - describe('parses ISO DateTime with zone offset and without time zone and defaults to SYSTEM time zone', () => { + describe('parses ISO DateTime with zone offset and without time zone and defaults to SYSTEM timezone', () => { it.each([ ['YYYY-MM-DDThh:mm:ss.f+HH:mm', '2016-03-18T12:38:23.561+01:00'], ['YYYY-MM-DDThh:mm:ss.f-HH:mm', '2016-03-18T12:38:23.56-04:30'], From 0b476a0cd700667db880e9fed0ae1e0656e800a0 Mon Sep 17 00:00:00 2001 From: Florian Hotze Date: Sat, 2 Dec 2023 01:50:52 +0100 Subject: [PATCH 9/9] Update type defs Signed-off-by: Florian Hotze --- types/time.d.ts.map | 2 +- types/utils.d.ts | 10 +++++++++- types/utils.d.ts.map | 2 +- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/types/time.d.ts.map b/types/time.d.ts.map index 63be4f299..63c5a73df 100644 --- a/types/time.d.ts.map +++ b/types/time.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"time.d.ts","sourceRoot":"","sources":["../time.js"],"names":[],"mappings":";;;;;;;;;;IAAA;;;;;OAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0KH;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,mCAHa,KAAK,aAAa,CAyE9B;AApKD;;;;;;;GAOG;AACH,mCAJW,MAAM,GACJ,KAAK,aAAa,CA0C9B;AAjFD;;;;;;;;;;;;GAYG;AACH,6CAHa,KAAK,aAAa,GAAC,IAAI,CAsBnC"} \ No newline at end of file +{"version":3,"file":"time.d.ts","sourceRoot":"","sources":["../time.js"],"names":[],"mappings":";;;;;;;;;;IAAA;;;;;OAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4KH;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,mCAHa,KAAK,aAAa,CAyE9B;AApKD;;;;;;;GAOG;AACH,mCAJW,MAAM,GACJ,KAAK,aAAa,CA0C9B;AAnFD;;;;;;;;;;;;GAYG;AACH,6CAHa,KAAK,aAAa,GAAC,IAAI,CAwBnC"} \ No newline at end of file diff --git a/types/utils.d.ts b/types/utils.d.ts index 61ed7cd9d..6d5506b50 100644 --- a/types/utils.d.ts +++ b/types/utils.d.ts @@ -96,13 +96,21 @@ export function isJsInstanceOfJava(instance: any, type: JavaClass): boolean; */ export function javaInstantToJsInstant(instant: JavaInstant): time.Instant; /** - * Convert Java ZonedDateTime to JS-Joda. + * Convert Java ZonedDateTime to JS-Joda ZonedDateTime. * * @memberOf utils * @param {JavaZonedDateTime} zdt {@link https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/ZonedDateTime.html java.time.ZonedDateTime} * @returns {time.ZonedDateTime} {@link https://js-joda.github.io/js-joda/class/packages/core/src/ZonedDateTime.js~ZonedDateTime.html JS-Joda ZonedDateTime} */ export function javaZDTToJsZDT(zdt: JavaZonedDateTime): time.ZonedDateTime; +/** + * Convert Java ZonedDateTime to JS-Joda ZonedDateTime and default to SYSTEM timezone if not explicitly set. + * + * @memberOf utils + * @param {JavaZonedDateTime} zdt {@link https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/ZonedDateTime.html java.time.ZonedDateTime} + * @returns {time.ZonedDateTime} {@link https://js-joda.github.io/js-joda/class/packages/core/src/ZonedDateTime.js~ZonedDateTime.html JS-Joda ZonedDateTime} + */ +export function javaZDTToJsZDTWithDefaultZoneSystem(zdt: JavaZonedDateTime): time.ZonedDateTime; /** * openHAB JavaScript library version * diff --git a/types/utils.d.ts.map b/types/utils.d.ts.map index a7b2974d8..a8cb8672d 100644 --- a/types/utils.d.ts.map +++ b/types/utils.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../utils.js"],"names":[],"mappings":"AA4BA;;;;;;GAMG;AACH,uDAIC;AAED;;;;;;GAMG;AACH,sDAMC;AAED;;;;;;GAMG;AACH,wDAMC;AAED;;;;;;GAMG;AACH,yDAEC;AAED;;;;;;GAMG;AACH,sDAEC;AA4BD;;;;;;GAMG;AACH,uDAEC;AAnCD;;;;;;GAMG;AACH,8CAFa,IAAI,GAAG,EAAE,GAAG,CAAC,CAMzB;AAED;;;;;;GAMG;AACH,8CAFa,MAAM,CAMlB;AAaD;;;;;GAKG;AACH,8BAFa,MAAM,CAE8C;AAEjE;;;;;;GAMG;AACH,iDAFW,OAAO,QAmDjB;AAED;;;;;;;;GAQG;AACH,oEAHa,OAAO,CAanB;AAED;;;;;;GAMG;AACH,8DAFa,KAAK,OAAO,CAIxB;AAED;;;;;;GAMG;AACH,wDAFa,KAAK,aAAa,CAO9B;AA9OD;;;;;;GAMG;AACH,uBAFU,MAAM,CAEkC"} \ No newline at end of file +{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../utils.js"],"names":[],"mappings":"AA4BA;;;;;;GAMG;AACH,uDAIC;AAED;;;;;;GAMG;AACH,sDAMC;AAED;;;;;;GAMG;AACH,wDAMC;AAED;;;;;;GAMG;AACH,yDAEC;AAED;;;;;;GAMG;AACH,sDAEC;AA4BD;;;;;;GAMG;AACH,uDAEC;AAnCD;;;;;;GAMG;AACH,8CAFa,IAAI,GAAG,EAAE,GAAG,CAAC,CAMzB;AAED;;;;;;GAMG;AACH,8CAFa,MAAM,CAMlB;AAaD;;;;;GAKG;AACH,8BAFa,MAAM,CAE8C;AAEjE;;;;;;GAMG;AACH,iDAFW,OAAO,QAmDjB;AAED;;;;;;;;GAQG;AACH,oEAHa,OAAO,CAanB;AAED;;;;;;GAMG;AACH,8DAFa,KAAK,OAAO,CAIxB;AAED;;;;;;GAMG;AACH,wDAFa,KAAK,aAAa,CAO9B;AAED;;;;;;GAMG;AACH,6EAFa,KAAK,aAAa,CAQ9B;AA7PD;;;;;;GAMG;AACH,uBAFU,MAAM,CAEkC"} \ No newline at end of file