|
■No93535 (魔界の仮面弁士 さん) に返信 > ブラウザーに依存させず、確実に 2019年10月1日時点の > 日付が得られるようにしたいなら、入力された文字列を分解して > startMon = new Date(2019, 9, 1); // 日本時間(時差+9時間) > もしくは > startMon = new Date(Date.UTC(2019, 9, 1)); // 協定世界時(時差+0時間) > の形式で処理するのが確実です。前者は JST、後者は UTC 時間です。 > 月数は 0〜11 で指定する必要がある点に注意して下さい。 > > ※前者は現地時間であり、必ずしもは JST とは限りません。 > > 分解処理については、たとえばこんな感じ。 > > var strYM = $("#text_startMon ").val(); > > // 正しい年月指定になっているか確認する > if ( !/^\d{4}\/(0[1-9]|1[0-2])$/.test(strYM) ) > { > // > // 不正な形式の場合 > // > } else { > // > // 正しい形式の場合 > // > var ym = strYM.split(/\//); > startMon = new Date(parseInt(ym[0], 10), parseInt(ym[1], 10) - 1, 1); > }
ご回答ありがとうございます。 魔界の仮面弁士さんが例であげていただいたコードを用いて修正致しました。
下記修正文↓ var strYM = $("#text_startMon ").val(); // 正しい年月指定になっているか確認する if (!/^\d{4}\/(0[1-9]|1[0-2])$/.test(strYM)) { // 不正な形式の場合 } else { // 正しい形式の場合 var ym = strYM.split(/\//); startMon = new Date(Date.UTC(parseInt(ym[0], 10), parseInt(ym[1], 10) - 1, 1));
}
このような形にしたところ、上手くDate型として任意の日付を変更することができました。
> たとえば、日本語の IE 環境の場合、通常は > ローカルタイムが日本標準時(+9時間)で実行されるため、 > // var dt = new Date("2019/10/01"); > var dt = new Date(2019, 9, 1); > var s = dt.toJSON(); > などは「"2019-09-30T15:00:00Z"」という文字列になりますし、 > var dt = new Date(Date.UTC(2019, 9, 1)); > var s = dt.toJSON(); > の場合には「"2019-10-01T00:00:00Z"」という文字列になるでしょう。
new Dateの後にDate.UTCを付け加えることによって、テキストボックスに2019/10と入れた通りの日付を取得することができました。
ありがとうございました。
|