質問: ご閲覧いただきまして、ありがとうございます。 TypeScriptでStringで定義しているDateとTimeをUTCの下記のようなフォーマットに変更したいです。 現在のコードでは Invalid Error が生じてしまい、困っています。 `2018/10/27+16:00` => `20181027T01000Z` また、開始〜終了までを出したいのですが、後半の日時に30分足したものを出したいと考えているのですが、どうすればよろしいでしょうか。 追記: date と time に入っている単位 `date` => `2018/10/27 土` `time` => `16:00` ``` import * as moment from 'moment' ・・・ dates=${moment(`${String(date)}`).format('YYYYMMDD')}T${moment(`${String(time)}`) .utc() .format('HHmm')}Z/${moment(`${String(date)}`).format('YYYYMMDD')}T${moment( /* ここの時間に30分加算したいです */ `${String(time)}`, ) .utc() .format('HHmm')}`} ・・・ ``` すみませんが、お知恵を拝借できればと思います。
回答: こんにちは ご質問の要件としては、以下の2つの変数 * date: `"2018/10/27 土"` という形式の文字列 * time: `"16:00"` という形式の文字列 によって構成される、日本における日時を、(moment を使って) UTCの日時に変換し、それを `YYYYMMDDTHHmmssZ` という形式の文字列として得たい、というお題と解釈しました。 以下のような手順で得られます。 (1) date と time を結合した文字列を作ります。ただし、曜日の部分は不要なので削除します。 ``` const date = '2018/10/27 土'; const time = '16:00'; const datetimeStr = `${date.slice(0, 10)} ${time}`; // => "2018/10/27 16:00" ``` (2) 上記 (1) で得られた `datetimeStr` をパースして moment オブジェクトを取得します。 ``` const m = moment(datetimeStr, 'YYYY/MM/DD HH:mm'); ``` (3) UTCに変換してから、望ましい形の文字列に編集します。 ``` const utcStr = `${m.utc().format('YYYYMMDDTHHmmss')}Z`; // => "20181027T070000Z" ``` 上記のコードを動作確認するためのサンプルを、以下に上げておきました。 * 上記の変換を、質問者さまが現在取り組まれている Reactアプリのどこかに組み込めばよろしいかと思います。 以上、参考になれば幸いです。