Skip to content

Commit f52a985

Browse files
fix(smithy-client): rfc-7231 date-time value (#3814)
* fix(smithy-client): rfc-7231 date-time value
1 parent 32022f9 commit f52a985

File tree

2 files changed

+39
-3
lines changed

2 files changed

+39
-3
lines changed

packages/smithy-client/src/date-utils.spec.ts

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,15 @@ describe("parseRfc7231DateTime", () => {
6363
expect(parseRfc7231DateTime(value)).toEqual(new Date(Date.UTC(1994, 10, 6, 8, 49, 37, 520)));
6464
});
6565
});
66+
describe("with fractional seconds - single digit hour", () => {
67+
it.each([
68+
["imf-fixdate", "Sun, 06 Nov 1994 8:49:37.52 GMT"],
69+
["rfc-850", "Sunday, 06-Nov-94 8:49:37.52 GMT"],
70+
["asctime", "Sun Nov 6 8:49:37.52 1994"],
71+
])("in format %s", (_, value) => {
72+
expect(parseRfc7231DateTime(value)).toEqual(new Date(Date.UTC(1994, 10, 6, 8, 49, 37, 520)));
73+
});
74+
});
6675
describe("without fractional seconds", () => {
6776
it.each([
6877
["imf-fixdate", "Sun, 06 Nov 1994 08:49:37 GMT"],
@@ -72,6 +81,15 @@ describe("parseRfc7231DateTime", () => {
7281
expect(parseRfc7231DateTime(value)).toEqual(new Date(Date.UTC(1994, 10, 6, 8, 49, 37, 0)));
7382
});
7483
});
84+
describe("without fractional seconds - single digit hour", () => {
85+
it.each([
86+
["imf-fixdate", "Sun, 06 Nov 1994 8:49:37 GMT"],
87+
["rfc-850", "Sunday, 06-Nov-94 8:49:37 GMT"],
88+
["asctime", "Sun Nov 6 8:49:37 1994"],
89+
])("in format %s", (_, value) => {
90+
expect(parseRfc7231DateTime(value)).toEqual(new Date(Date.UTC(1994, 10, 6, 8, 49, 37, 0)));
91+
});
92+
});
7593
describe("with leap seconds", () => {
7694
it.each([
7795
["imf-fixdate", "Mon, 31 Dec 1990 15:59:60 GMT"],
@@ -81,6 +99,15 @@ describe("parseRfc7231DateTime", () => {
8199
expect(parseRfc7231DateTime(value)).toEqual(new Date(Date.UTC(1990, 11, 31, 15, 59, 60, 0)));
82100
});
83101
});
102+
describe("with leap seconds - single digit hour", () => {
103+
it.each([
104+
["imf-fixdate", "Mon, 31 Dec 1990 8:59:60 GMT"],
105+
["rfc-850", "Monday, 31-Dec-90 8:59:60 GMT"],
106+
["asctime", "Mon Dec 31 8:59:60 1990"],
107+
])("in format %s", (_, value) => {
108+
expect(parseRfc7231DateTime(value)).toEqual(new Date(Date.UTC(1990, 11, 31, 8, 59, 60, 0)));
109+
});
110+
});
84111
describe("with leap days", () => {
85112
it.each([
86113
["imf-fixdate", "Sun, 29 Feb 2004 15:59:59 GMT"],
@@ -90,6 +117,15 @@ describe("parseRfc7231DateTime", () => {
90117
expect(parseRfc7231DateTime(value)).toEqual(new Date(Date.UTC(2004, 1, 29, 15, 59, 59, 0)));
91118
});
92119
});
120+
describe("with leap days - single digit hour", () => {
121+
it.each([
122+
["imf-fixdate", "Sun, 29 Feb 2004 8:59:59 GMT"],
123+
["rfc-850", "Sunday, 29-Feb-04 8:59:59 GMT"],
124+
["asctime", "Sun Feb 29 8:59:59 2004"],
125+
])("in format %s", (_, value) => {
126+
expect(parseRfc7231DateTime(value)).toEqual(new Date(Date.UTC(2004, 1, 29, 8, 59, 59, 0)));
127+
});
128+
});
93129
describe("with leading zeroes", () => {
94130
it.each([
95131
["imf-fixdate", "Sun, 06 Nov 0004 08:09:07.02 GMT", 4],

packages/smithy-client/src/date-utils.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -74,13 +74,13 @@ export const parseRfc3339DateTime = (value: unknown): Date | undefined => {
7474
};
7575

7676
const IMF_FIXDATE = new RegExp(
77-
/^(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun), (\d{2}) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\d{4}) (\d{2}):(\d{2}):(\d{2})(?:\.(\d+))? GMT$/
77+
/^(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun), (\d{2}) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\d{4}) (\d{1,2}):(\d{2}):(\d{2})(?:\.(\d+))? GMT$/
7878
);
7979
const RFC_850_DATE = new RegExp(
80-
/^(?:Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday), (\d{2})-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\d{2}) (\d{2}):(\d{2}):(\d{2})(?:\.(\d+))? GMT$/
80+
/^(?:Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday), (\d{2})-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\d{2}) (\d{1,2}):(\d{2}):(\d{2})(?:\.(\d+))? GMT$/
8181
);
8282
const ASC_TIME = new RegExp(
83-
/^(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ( [1-9]|\d{2}) (\d{2}):(\d{2}):(\d{2})(?:\.(\d+))? (\d{4})$/
83+
/^(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ( [1-9]|\d{2}) (\d{1,2}):(\d{2}):(\d{2})(?:\.(\d+))? (\d{4})$/
8484
);
8585

8686
/**

0 commit comments

Comments
 (0)