@@ -9,27 +9,13 @@ const utils = `
9
9
import { either } from 'fp-ts/lib/Either';
10
10
import { Type, failure, success, string as tstring } from 'io-ts';
11
11
12
- const getISOTimezoneOffsetString = (offsetMinutes: number): string => {
13
- if (offsetMinutes === 0) {
14
- return 'Z';
15
- }
16
-
17
- const absoluteOffsetMinutes = Math.abs(offsetMinutes);
18
- const offsetHours = absoluteOffsetMinutes / 60;
19
- const offsetRestMinutes = absoluteOffsetMinutes % 60;
20
-
21
- return \`\${offsetMinutes > 0 ? '-' : '+'}\${offsetHours
22
- .toString()
23
- .padStart(2, '0')}:\${offsetRestMinutes.toString().padStart(2, '0')}\`;
24
- };
25
-
26
12
export const DateFromISODateStringIO = new Type<Date, string, unknown>(
27
13
'DateFromISODateString',
28
14
(u): u is Date => u instanceof Date,
29
15
(u, c) =>
30
- either.chain(tstring.validate(u, c), s => {
31
- const offset = new Date().getTimezoneOffset( );
32
- const d = new Date(\`\${s}T00:00:00\${getISOTimezoneOffsetString(offset)}\` );
16
+ either.chain(tstring.validate(u, c), dateString => {
17
+ const [year, calendarMonth, day] = dateString.split('-' );
18
+ const d = new Date(+year, +calendarMonth - 1, +day );
33
19
return isNaN(d.getTime()) ? failure(u, c) : success(d);
34
20
}),
35
21
a =>
0 commit comments