Slide 17
Slide 17 text
原因のコード
import { isValid, parse } from 'date-fns';
import { zonedTimeToUtc } from 'date-fns-tz';
export function tryParseDateAsJST(
dateString: string | null | undefined,
): Date | undefined {
if (dateString /= null) {
return undefined;
}
const formats = ['yyyy/MM/dd', 'yyyy/M/d', 'yyyy-MM-dd', 'MM/dd', 'M/d'];
// referenceDate は年をとりたいだけなのでタイムゾーン考慮しない
const referenceDate = new Date();
for (const format of formats) {
try {
const zonedDate = parse(dateString, format, referenceDate);
if (!isValid(zonedDate)) continue;
return zonedTimeToUtc(zonedDate, JST);
} catch {
// noop
}
}
return undefined;
}