@beinformed/ui 1.59.2 → 1.59.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,146 @@
1
+ import { TimestampUtil } from "../DateTimeUtil";
2
+ import { INCLUDE_TIME_OFFSET, setSettings } from "../../../constants";
3
+
4
+ const timestamp = "2023-06-07T07:04:01.010+02:00";
5
+
6
+ describe("date time format conversion", () => {
7
+ beforeEach(() => {
8
+ TimestampUtil.setTimeZone("Europe/Amsterdam");
9
+ setSettings({ [INCLUDE_TIME_OFFSET]: true });
10
+ });
11
+
12
+ test("Year", () => {
13
+ expect(TimestampUtil.toFormat(timestamp, "yy")).toBe("23");
14
+ expect(TimestampUtil.toFormat(timestamp, "yyyy")).toBe("2023");
15
+ });
16
+
17
+ test("Month", () => {
18
+ expect(TimestampUtil.toFormat(timestamp, "M")).toBe("6");
19
+ expect(TimestampUtil.toFormat(timestamp, "MM")).toBe("06");
20
+ expect(TimestampUtil.toFormat(timestamp, "MMM")).toBe("Jun");
21
+ expect(TimestampUtil.toFormat(timestamp, "MMMM")).toBe("June");
22
+ expect(TimestampUtil.toFormat(timestamp, "MMMMM")).toBe("J");
23
+
24
+ expect(TimestampUtil.toFormat(timestamp, "L")).toBe("6");
25
+ expect(TimestampUtil.toFormat(timestamp, "LL")).toBe("06");
26
+ expect(TimestampUtil.toFormat(timestamp, "LLL")).toBe("Jun");
27
+ expect(TimestampUtil.toFormat(timestamp, "LLLL")).toBe("June");
28
+ expect(TimestampUtil.toFormat(timestamp, "LLLLL")).toBe("J");
29
+ });
30
+
31
+ test("Day", () => {
32
+ expect(TimestampUtil.toFormat(timestamp, "d")).toBe("7");
33
+ expect(TimestampUtil.toFormat(timestamp, "dd")).toBe("07");
34
+ });
35
+
36
+ test("Quarter", () => {
37
+ expect(TimestampUtil.toFormat(timestamp, "Q")).toBe("2");
38
+ expect(TimestampUtil.toFormat(timestamp, "QQ")).toBe("02");
39
+ expect(TimestampUtil.toFormat(timestamp, "QQQ")).toBe("Q2");
40
+ expect(TimestampUtil.toFormat(timestamp, "QQQQ")).toBe("2nd quarter");
41
+ });
42
+
43
+ test.skip("Day of Year", () => {
44
+ expect(TimestampUtil.toFormat(timestamp, "D")).toBe("7");
45
+ expect(TimestampUtil.toFormat(timestamp, "DD")).toBe("07");
46
+ expect(TimestampUtil.toFormat(timestamp, "DDD")).toBe("07");
47
+ });
48
+
49
+ test("Day of Week", () => {
50
+ expect(TimestampUtil.toFormat(timestamp, "E")).toBe("Wed");
51
+ expect(TimestampUtil.toFormat(timestamp, "EEEE")).toBe("Wednesday");
52
+ expect(TimestampUtil.toFormat(timestamp, "EEEEE")).toBe("W");
53
+
54
+ expect(TimestampUtil.toFormat(timestamp, "e")).toBe("3");
55
+ expect(TimestampUtil.toFormat(timestamp, "ee")).toBe("03");
56
+ expect(TimestampUtil.toFormat(timestamp, "eee")).toBe("Wed");
57
+ expect(TimestampUtil.toFormat(timestamp, "eeee")).toBe("Wednesday");
58
+ expect(TimestampUtil.toFormat(timestamp, "eeeee")).toBe("W");
59
+ });
60
+
61
+ test("Week", () => {
62
+ expect(TimestampUtil.toFormat(timestamp, "w")).toBe("23");
63
+ // expect(TimestampUtil.toFormat(timestamp, "W")).toBe("23");
64
+ // expect(TimestampUtil.toFormat(timestamp, "F")).toBe("W");
65
+ });
66
+
67
+ test("Hour", () => {
68
+ expect(TimestampUtil.toFormat(timestamp, "H")).toBe("7");
69
+ expect(TimestampUtil.toFormat(timestamp, "HH")).toBe("07");
70
+ expect(TimestampUtil.toFormat(timestamp, "h")).toBe("7");
71
+ expect(TimestampUtil.toFormat(timestamp, "hh")).toBe("07");
72
+
73
+ expect(TimestampUtil.toFormat(timestamp, "a")).toBe("AM");
74
+ expect(TimestampUtil.toFormat(timestamp, "aa")).toBe("AM");
75
+ expect(TimestampUtil.toFormat(timestamp, "aaa")).toBe("am");
76
+ expect(TimestampUtil.toFormat(timestamp, "aaaa")).toBe("a.m.");
77
+ expect(TimestampUtil.toFormat(timestamp, "aaaaa")).toBe("a");
78
+
79
+ expect(TimestampUtil.toFormat(timestamp, "K")).toBe("7");
80
+ expect(TimestampUtil.toFormat(timestamp, "k")).toBe("7");
81
+ });
82
+
83
+ test("Minute", () => {
84
+ expect(TimestampUtil.toFormat(timestamp, "m")).toBe("4");
85
+ expect(TimestampUtil.toFormat(timestamp, "mm")).toBe("04");
86
+ });
87
+
88
+ test("Seconds", () => {
89
+ expect(TimestampUtil.toFormat(timestamp, "s")).toBe("1");
90
+ expect(TimestampUtil.toFormat(timestamp, "ss")).toBe("01");
91
+ });
92
+
93
+ test("Milliseconds", () => {
94
+ expect(TimestampUtil.toFormat(timestamp, "SSS")).toBe("010");
95
+ });
96
+
97
+ test("Zone / offset", () => {
98
+ expect(TimestampUtil.toFormat(timestamp, "z")).toBe("GMT+2");
99
+ expect(TimestampUtil.toFormat(timestamp, "zz")).toBe("GMT+2");
100
+ expect(TimestampUtil.toFormat(timestamp, "zzz")).toBe("GMT+2");
101
+ expect(TimestampUtil.toFormat(timestamp, "zzzz")).toBe("GMT+02:00");
102
+ expect(TimestampUtil.toFormat(timestamp, "zzzzz")).toBe("GMT+02:00");
103
+
104
+ expect(TimestampUtil.toFormat(timestamp, "X")).toBe("+02");
105
+ expect(TimestampUtil.toFormat(timestamp, "XX")).toBe("+0200");
106
+ expect(TimestampUtil.toFormat(timestamp, "XXX")).toBe("+02:00");
107
+
108
+ expect(TimestampUtil.toFormat(timestamp, "x")).toBe("+02");
109
+ expect(TimestampUtil.toFormat(timestamp, "xx")).toBe("+0200");
110
+ expect(TimestampUtil.toFormat(timestamp, "xxx")).toBe("+02:00");
111
+
112
+ expect(TimestampUtil.toFormat(timestamp, "O")).toBe("GMT+2");
113
+ expect(TimestampUtil.toFormat(timestamp, "OOOO")).toBe("GMT+02:00");
114
+
115
+ // expect(TimestampUtil.toFormat(timestamp, "VV")).toBe("GMT+02:00");
116
+ // expect(TimestampUtil.toFormat(timestamp, "V")).toBe("Europe/Amsterdam");
117
+ // expect(TimestampUtil.toFormat(timestamp, "Z")).toBe("+02:00");
118
+ // expect(TimestampUtil.toFormat(timestamp, "ZZZZ")).toBe("+02:00");
119
+ });
120
+
121
+ test("Era and Chronology", () => {
122
+ expect(TimestampUtil.toFormat(timestamp, "G")).toBe("AD");
123
+ expect(TimestampUtil.toFormat(timestamp, "GGGG")).toBe("Anno Domini");
124
+ expect(TimestampUtil.toFormat(timestamp, "GGGGG")).toBe("A");
125
+
126
+ expect(TimestampUtil.toFormat(timestamp, "u")).toBe("2023");
127
+ });
128
+
129
+ test("Converted", () => {
130
+ const ZZZ = TimestampUtil.convertFormat("ZZZ");
131
+ expect(TimestampUtil.toFormat(timestamp, ZZZ)).toBe("+02:00");
132
+
133
+ const ZZ = TimestampUtil.convertFormat("ZZ");
134
+ expect(TimestampUtil.toFormat(timestamp, ZZ)).toBe("+0200");
135
+
136
+ const Z = TimestampUtil.convertFormat("Z");
137
+ expect(TimestampUtil.toFormat(timestamp, Z)).toBe("+02");
138
+
139
+ const fullDateTime = TimestampUtil.convertFormat(
140
+ "EEE MMM dd, yyyy h:mma ZZ",
141
+ );
142
+ expect(TimestampUtil.toFormat(timestamp, fullDateTime)).toBe(
143
+ "Wed Jun 07, 2023 7:04AM +0200",
144
+ );
145
+ });
146
+ });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@beinformed/ui",
3
- "version": "1.59.2",
3
+ "version": "1.59.4",
4
4
  "description": "Toolbox for be informed javascript layouts",
5
5
  "license": "SEE LICENSE IN LICENSE.md",
6
6
  "bugs": "http://support.beinformed.com",
@@ -34,6 +34,9 @@ import type { OffsetInfo } from "../../utils/datetime/DateTimeUtil";
34
34
  /**
35
35
  */
36
36
  class DatetimeAttributeModel extends StringAttributeModel {
37
+ _dateInputFormat: ?string;
38
+ _timeInputFormat: ?string;
39
+
37
40
  /**
38
41
  */
39
42
  constructor(
@@ -269,9 +272,27 @@ class DatetimeAttributeModel extends StringAttributeModel {
269
272
  return "";
270
273
  }
271
274
 
272
- return this.hasTime
273
- ? this.format.replace(this.timeInputFormat, "").trim()
274
- : this.format;
275
+ if (this._dateInputFormat) {
276
+ return this._dateInputFormat;
277
+ }
278
+
279
+ // remove time and offset tokens
280
+ const charsToRemove = "HhaKmsSzXxO:";
281
+
282
+ let inputFormat = "";
283
+ let isInQuotes = false;
284
+ for (let i = 0; i < this.format.length; i++) {
285
+ const char = this.format[i];
286
+ if (char === "'") {
287
+ isInQuotes = !isInQuotes;
288
+ }
289
+ if (isInQuotes || !charsToRemove.includes(char)) {
290
+ inputFormat += char;
291
+ }
292
+ }
293
+
294
+ this._dateInputFormat = inputFormat.trim();
295
+ return this._dateInputFormat;
275
296
  }
276
297
 
277
298
  /**
@@ -318,6 +339,10 @@ class DatetimeAttributeModel extends StringAttributeModel {
318
339
  return "";
319
340
  }
320
341
 
342
+ if (this._timeInputFormat) {
343
+ return this._timeInputFormat;
344
+ }
345
+
321
346
  const format = this.format;
322
347
 
323
348
  let timeFormatParts = [];
@@ -338,9 +363,11 @@ class DatetimeAttributeModel extends StringAttributeModel {
338
363
  timeFormat = `${timeFormat}.SSS`;
339
364
  }
340
365
  if (format.includes("a")) {
341
- return `${timeFormat} a`;
366
+ timeFormat = `${timeFormat} a`;
342
367
  }
343
- return timeFormat;
368
+
369
+ this._timeInputFormat = timeFormat;
370
+ return this._timeInputFormat;
344
371
  }
345
372
 
346
373
  /**
@@ -385,15 +412,6 @@ class DatetimeAttributeModel extends StringAttributeModel {
385
412
  return DateUtil.toFormat(value, this.dateReadonlyFormat);
386
413
  }
387
414
 
388
- if (this.hasDate && this.hasTime) {
389
- const dateTimeReadonlyFormat = `${this.dateReadonlyFormat} ${this.timeReadonlyFormat}`;
390
- return this.formatUtil.toFormat(value, dateTimeReadonlyFormat);
391
- }
392
-
393
- if (this.type === "date") {
394
- return this.formatUtil.toFormat(value, this.dateReadonlyFormat);
395
- }
396
-
397
415
  return this.formatUtil.toFormat(value, this.format);
398
416
  }
399
417
 
@@ -153,6 +153,35 @@ describe("datetimeAttributeModel", () => {
153
153
  expect(attribute.readonlyvalue).toBe("21-12-2031 17:41");
154
154
  });
155
155
 
156
+ it("can handle custom format", () => {
157
+ const attribute = new DatetimeAttributeModel(
158
+ { value: "2031-12-21T17:41:21" },
159
+ {
160
+ type: "datetime",
161
+ format: "dd-MM-yyyy HH:mm xxx",
162
+ },
163
+ );
164
+ expect(attribute.readonlyvalue).toBe("21-12-2031 17:41 +01:00");
165
+
166
+ const attribute2 = new DatetimeAttributeModel(
167
+ { value: "2031-12-21T17:41:21" },
168
+ {
169
+ type: "datetime",
170
+ format: "dd-MM-yyyy HH:mm Z",
171
+ },
172
+ );
173
+ expect(attribute2.readonlyvalue).toBe("21-12-2031 17:41 +01");
174
+
175
+ const attribute3 = new DatetimeAttributeModel(
176
+ { value: "2031-12-21T17:41:21" },
177
+ {
178
+ type: "datetime",
179
+ format: "EEE MMM dd, yyyy h:mma ZZ",
180
+ },
181
+ );
182
+ expect(attribute3.readonlyvalue).toBe("Sun Dec 21, 2031 5:41PM +0100");
183
+ });
184
+
156
185
  it("returns date part of formatlabel as placeholder if attribute has date and time", () => {
157
186
  const attribute = new DatetimeAttributeModel(
158
187
  {},
@@ -303,4 +303,21 @@ describe("datetimeAttributeModel with offset on", () => {
303
303
  value: "+02:00",
304
304
  });
305
305
  });
306
+
307
+ it("Date format with offset info", () => {
308
+ const attribute = new DatetimeAttributeModel(
309
+ { key: "datetime", value: "1969-09-23T12:34:00+00:00" },
310
+ {
311
+ type: "datetime",
312
+ label: "Start date and time at company",
313
+ mandatory: false,
314
+ formatlabel: "dd-mm-yyyy hh:mm",
315
+ assistant: "The date and time of the first working day",
316
+ format: "dd-MM-yyyy HH:mm X",
317
+ },
318
+ );
319
+
320
+ expect(attribute.format).toBe("dd-MM-yyyy HH:mm X");
321
+ expect(attribute.errorCollection.isEmpty).toBe(true);
322
+ });
306
323
  });
@@ -99,8 +99,32 @@ class BaseDateTimeUtil {
99
99
 
100
100
  /**
101
101
  */
102
- convertFormat(sourceFormat: string): string {
103
- return sourceFormat ? sourceFormat : this.getIsoFormat();
102
+ convertFormat(javaFormat: string): string {
103
+ if (!javaFormat) {
104
+ return this.getIsoFormat();
105
+ }
106
+
107
+ const javaToUTS35Map = {
108
+ ZZZ: "xxx",
109
+ ZZ: "xx",
110
+ Z: "x",
111
+ };
112
+
113
+ // Replace Java pattern tokens with UTS #35 tokens
114
+ let uts35Format = javaFormat;
115
+
116
+ // Sort keys by length (descending) to handle multi-character tokens first
117
+ const sortedKeys = Object.keys(javaToUTS35Map).sort(
118
+ (a, b) => b.length - a.length,
119
+ );
120
+
121
+ for (const javaToken of sortedKeys) {
122
+ const uts35Token = javaToUTS35Map[javaToken];
123
+ const regex = new RegExp(javaToken, "g"); // Match all occurrences
124
+ uts35Format = uts35Format.replace(regex, uts35Token);
125
+ }
126
+
127
+ return uts35Format;
104
128
  }
105
129
 
106
130
  /**
@@ -613,6 +613,13 @@ describe("asserts for date/time utilities", () => {
613
613
  expect(TimestampUtil.convertFormat("yyyy-MM-dd HH:mm:ss.SSS")).toBe(
614
614
  "yyyy-MM-dd HH:mm:ss.SSS",
615
615
  );
616
+ expect(TimestampUtil.convertFormat("dd-MM-yyyy HH:mm Z")).toBe(
617
+ "dd-MM-yyyy HH:mm x",
618
+ );
619
+
620
+ expect(TimestampUtil.convertFormat("dd-MM-yyyy HH:mm zzzz")).toBe(
621
+ "dd-MM-yyyy HH:mm zzzz",
622
+ );
616
623
  });
617
624
 
618
625
  it("should render iso timestamp to specified format", () => {
@@ -0,0 +1,146 @@
1
+ import { TimestampUtil } from "../DateTimeUtil";
2
+ import { INCLUDE_TIME_OFFSET, setSettings } from "../../../constants";
3
+
4
+ const timestamp = "2023-06-07T07:04:01.010+02:00";
5
+
6
+ describe("date time format conversion", () => {
7
+ beforeEach(() => {
8
+ TimestampUtil.setTimeZone("Europe/Amsterdam");
9
+ setSettings({ [INCLUDE_TIME_OFFSET]: true });
10
+ });
11
+
12
+ test("Year", () => {
13
+ expect(TimestampUtil.toFormat(timestamp, "yy")).toBe("23");
14
+ expect(TimestampUtil.toFormat(timestamp, "yyyy")).toBe("2023");
15
+ });
16
+
17
+ test("Month", () => {
18
+ expect(TimestampUtil.toFormat(timestamp, "M")).toBe("6");
19
+ expect(TimestampUtil.toFormat(timestamp, "MM")).toBe("06");
20
+ expect(TimestampUtil.toFormat(timestamp, "MMM")).toBe("Jun");
21
+ expect(TimestampUtil.toFormat(timestamp, "MMMM")).toBe("June");
22
+ expect(TimestampUtil.toFormat(timestamp, "MMMMM")).toBe("J");
23
+
24
+ expect(TimestampUtil.toFormat(timestamp, "L")).toBe("6");
25
+ expect(TimestampUtil.toFormat(timestamp, "LL")).toBe("06");
26
+ expect(TimestampUtil.toFormat(timestamp, "LLL")).toBe("Jun");
27
+ expect(TimestampUtil.toFormat(timestamp, "LLLL")).toBe("June");
28
+ expect(TimestampUtil.toFormat(timestamp, "LLLLL")).toBe("J");
29
+ });
30
+
31
+ test("Day", () => {
32
+ expect(TimestampUtil.toFormat(timestamp, "d")).toBe("7");
33
+ expect(TimestampUtil.toFormat(timestamp, "dd")).toBe("07");
34
+ });
35
+
36
+ test("Quarter", () => {
37
+ expect(TimestampUtil.toFormat(timestamp, "Q")).toBe("2");
38
+ expect(TimestampUtil.toFormat(timestamp, "QQ")).toBe("02");
39
+ expect(TimestampUtil.toFormat(timestamp, "QQQ")).toBe("Q2");
40
+ expect(TimestampUtil.toFormat(timestamp, "QQQQ")).toBe("2nd quarter");
41
+ });
42
+
43
+ test.skip("Day of Year", () => {
44
+ expect(TimestampUtil.toFormat(timestamp, "D")).toBe("7");
45
+ expect(TimestampUtil.toFormat(timestamp, "DD")).toBe("07");
46
+ expect(TimestampUtil.toFormat(timestamp, "DDD")).toBe("07");
47
+ });
48
+
49
+ test("Day of Week", () => {
50
+ expect(TimestampUtil.toFormat(timestamp, "E")).toBe("Wed");
51
+ expect(TimestampUtil.toFormat(timestamp, "EEEE")).toBe("Wednesday");
52
+ expect(TimestampUtil.toFormat(timestamp, "EEEEE")).toBe("W");
53
+
54
+ expect(TimestampUtil.toFormat(timestamp, "e")).toBe("3");
55
+ expect(TimestampUtil.toFormat(timestamp, "ee")).toBe("03");
56
+ expect(TimestampUtil.toFormat(timestamp, "eee")).toBe("Wed");
57
+ expect(TimestampUtil.toFormat(timestamp, "eeee")).toBe("Wednesday");
58
+ expect(TimestampUtil.toFormat(timestamp, "eeeee")).toBe("W");
59
+ });
60
+
61
+ test("Week", () => {
62
+ expect(TimestampUtil.toFormat(timestamp, "w")).toBe("23");
63
+ // expect(TimestampUtil.toFormat(timestamp, "W")).toBe("23");
64
+ // expect(TimestampUtil.toFormat(timestamp, "F")).toBe("W");
65
+ });
66
+
67
+ test("Hour", () => {
68
+ expect(TimestampUtil.toFormat(timestamp, "H")).toBe("7");
69
+ expect(TimestampUtil.toFormat(timestamp, "HH")).toBe("07");
70
+ expect(TimestampUtil.toFormat(timestamp, "h")).toBe("7");
71
+ expect(TimestampUtil.toFormat(timestamp, "hh")).toBe("07");
72
+
73
+ expect(TimestampUtil.toFormat(timestamp, "a")).toBe("AM");
74
+ expect(TimestampUtil.toFormat(timestamp, "aa")).toBe("AM");
75
+ expect(TimestampUtil.toFormat(timestamp, "aaa")).toBe("am");
76
+ expect(TimestampUtil.toFormat(timestamp, "aaaa")).toBe("a.m.");
77
+ expect(TimestampUtil.toFormat(timestamp, "aaaaa")).toBe("a");
78
+
79
+ expect(TimestampUtil.toFormat(timestamp, "K")).toBe("7");
80
+ expect(TimestampUtil.toFormat(timestamp, "k")).toBe("7");
81
+ });
82
+
83
+ test("Minute", () => {
84
+ expect(TimestampUtil.toFormat(timestamp, "m")).toBe("4");
85
+ expect(TimestampUtil.toFormat(timestamp, "mm")).toBe("04");
86
+ });
87
+
88
+ test("Seconds", () => {
89
+ expect(TimestampUtil.toFormat(timestamp, "s")).toBe("1");
90
+ expect(TimestampUtil.toFormat(timestamp, "ss")).toBe("01");
91
+ });
92
+
93
+ test("Milliseconds", () => {
94
+ expect(TimestampUtil.toFormat(timestamp, "SSS")).toBe("010");
95
+ });
96
+
97
+ test("Zone / offset", () => {
98
+ expect(TimestampUtil.toFormat(timestamp, "z")).toBe("GMT+2");
99
+ expect(TimestampUtil.toFormat(timestamp, "zz")).toBe("GMT+2");
100
+ expect(TimestampUtil.toFormat(timestamp, "zzz")).toBe("GMT+2");
101
+ expect(TimestampUtil.toFormat(timestamp, "zzzz")).toBe("GMT+02:00");
102
+ expect(TimestampUtil.toFormat(timestamp, "zzzzz")).toBe("GMT+02:00");
103
+
104
+ expect(TimestampUtil.toFormat(timestamp, "X")).toBe("+02");
105
+ expect(TimestampUtil.toFormat(timestamp, "XX")).toBe("+0200");
106
+ expect(TimestampUtil.toFormat(timestamp, "XXX")).toBe("+02:00");
107
+
108
+ expect(TimestampUtil.toFormat(timestamp, "x")).toBe("+02");
109
+ expect(TimestampUtil.toFormat(timestamp, "xx")).toBe("+0200");
110
+ expect(TimestampUtil.toFormat(timestamp, "xxx")).toBe("+02:00");
111
+
112
+ expect(TimestampUtil.toFormat(timestamp, "O")).toBe("GMT+2");
113
+ expect(TimestampUtil.toFormat(timestamp, "OOOO")).toBe("GMT+02:00");
114
+
115
+ // expect(TimestampUtil.toFormat(timestamp, "VV")).toBe("GMT+02:00");
116
+ // expect(TimestampUtil.toFormat(timestamp, "V")).toBe("Europe/Amsterdam");
117
+ // expect(TimestampUtil.toFormat(timestamp, "Z")).toBe("+02:00");
118
+ // expect(TimestampUtil.toFormat(timestamp, "ZZZZ")).toBe("+02:00");
119
+ });
120
+
121
+ test("Era and Chronology", () => {
122
+ expect(TimestampUtil.toFormat(timestamp, "G")).toBe("AD");
123
+ expect(TimestampUtil.toFormat(timestamp, "GGGG")).toBe("Anno Domini");
124
+ expect(TimestampUtil.toFormat(timestamp, "GGGGG")).toBe("A");
125
+
126
+ expect(TimestampUtil.toFormat(timestamp, "u")).toBe("2023");
127
+ });
128
+
129
+ test("Converted", () => {
130
+ const ZZZ = TimestampUtil.convertFormat("ZZZ");
131
+ expect(TimestampUtil.toFormat(timestamp, ZZZ)).toBe("+02:00");
132
+
133
+ const ZZ = TimestampUtil.convertFormat("ZZ");
134
+ expect(TimestampUtil.toFormat(timestamp, ZZ)).toBe("+0200");
135
+
136
+ const Z = TimestampUtil.convertFormat("Z");
137
+ expect(TimestampUtil.toFormat(timestamp, Z)).toBe("+02");
138
+
139
+ const fullDateTime = TimestampUtil.convertFormat(
140
+ "EEE MMM dd, yyyy h:mma ZZ",
141
+ );
142
+ expect(TimestampUtil.toFormat(timestamp, fullDateTime)).toBe(
143
+ "Wed Jun 07, 2023 7:04AM +0200",
144
+ );
145
+ });
146
+ });