ブラウザでもNode.jsでも同じです
Date 型の toISOString() を使う
Date
toISOString()
const 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
ただし秒までしか要らない場合、自力でフォーマットする必要がある。
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:00Z
Date.parse() を使う
Date.parse()
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);