JavaScript 作 ▸ 2019-11-24 03:30 改 ▸ 2021-07-24 16:38 JavaScriptでISO8601形式の日付を扱う #JavaScript ブラウザでもNode.jsでも同じです もくじ Date → ISO8601Date 型の toISOString() を使う UTCconst dt = new Date(Date.UTC(1999, 6, 31)); const isoStr = dt.toISOString(); console.log(isoStr); // 1999-07-31T00:00:00.000Z日本標準時const dt = new Date(Date.UTC(1999, 6, 31)); const jdt = new Date(dt.getTime() + 9 * 60 * 60 * 1000); // 9時間ずらす const isoStr = jdt.toISOString().split('Z')[0] + '+09:00'; console.log(isoStr); // 1999-07-31T09:00:00.000+09:00ただし秒までしか要らない場合、自力でフォーマットする必要がある。 秒まで (UTC)const toISOStringSec = (dt) => { const pad = (val, len) => { let p = ''; for (let i = 0; i < len; ++i) { p += '0'; } return (p + String(val)).slice(-1 * len); }; const year = dt.getUTCFullYear(); const month = dt.getUTCMonth() + 1; const days = dt.getUTCDate(); const hours = dt.getUTCHours(); const minutes = dt.getUTCMinutes(); const seconds = dt.getUTCSeconds(); return `${year}-${pad(month, 2)}-${pad(days, 2)}T${pad(hours, 2)}:${pad(minutes, 2)}:${pad(seconds, 2)}Z`; }; const dt = new Date(Date.UTC(1999, 6, 31)); const isoStr = toISOStringSec(dt); console.log(isoStr); // 1999-07-31T00:00:00ZISO8601 → DateDate.parse() を使う UTCからconst ts = Date.parse('1999-07-31T00:00:00.000Z'); console.log(ts); // 933379200000 const dt = new Date(ts);日本標準時からconst ts = Date.parse('1999-07-31T09:00:00.000+09:00'); console.log(ts); // 933379200000 const dt = new Date(ts);こちらはミリ秒がついててもついてなくても変換できる ミリ秒無しconst ts = Date.parse('1999-07-31T00:00:00Z'); console.log(ts); // 933379200000 const dt = new Date(ts);