MCPcopy Create free account
hub / github.com/nodejs/node / parseImfDate

Function parseImfDate

deps/undici/src/lib/util/date.js:27–229  ·  view source on GitHub ↗

* @see https://httpwg.org/specs/rfc9110.html#preferred.date.format * * @param {string} date * @returns {Date | undefined}

(date)

Source from the content-addressed store, hash-verified

25 * @returns {Date | undefined}
26 */
27function parseImfDate (date) {
28 if (
29 date.length !== 29 ||
30 date[4] !== ' ' ||
31 date[7] !== ' ' ||
32 date[11] !== ' ' ||
33 date[16] !== ' ' ||
34 date[19] !== ':' ||
35 date[22] !== ':' ||
36 date[25] !== ' ' ||
37 date[26] !== 'G' ||
38 date[27] !== 'M' ||
39 date[28] !== 'T'
40 ) {
41 return undefined
42 }
43
44 let weekday = -1
45 if (date[0] === 'S' && date[1] === 'u' && date[2] === 'n') { // Sunday
46 weekday = 0
47 } else if (date[0] === 'M' && date[1] === 'o' && date[2] === 'n') { // Monday
48 weekday = 1
49 } else if (date[0] === 'T' && date[1] === 'u' && date[2] === 'e') { // Tuesday
50 weekday = 2
51 } else if (date[0] === 'W' && date[1] === 'e' && date[2] === 'd') { // Wednesday
52 weekday = 3
53 } else if (date[0] === 'T' && date[1] === 'h' && date[2] === 'u') { // Thursday
54 weekday = 4
55 } else if (date[0] === 'F' && date[1] === 'r' && date[2] === 'i') { // Friday
56 weekday = 5
57 } else if (date[0] === 'S' && date[1] === 'a' && date[2] === 't') { // Saturday
58 weekday = 6
59 } else {
60 return undefined // Not a valid day of the week
61 }
62
63 let day = 0
64 if (date[5] === '0') {
65 // Single digit day, e.g. "Sun Nov 6 08:49:37 1994"
66 const code = date.charCodeAt(6)
67 if (code < 49 || code > 57) {
68 return undefined // Not a digit
69 }
70 day = code - 48 // Convert ASCII code to number
71 } else {
72 const code1 = date.charCodeAt(5)
73 if (code1 < 49 || code1 > 51) {
74 return undefined // Not a digit between 1 and 3
75 }
76 const code2 = date.charCodeAt(6)
77 if (code2 < 48 || code2 > 57) {
78 return undefined // Not a digit
79 }
80 day = (code1 - 48) * 10 + (code2 - 48) // Convert ASCII codes to number
81 }
82
83 let monthIdx = -1
84 if (

Callers 1

parseHttpDateFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected