1. ホーム
  2. javascript

[解決済み] javascript で日付を 'Thu Jun 09 2011 00:00:00 GMT+0530 (India Standard Time)' から 'YYYY-MM-DD' に変換する

2022-02-27 14:52:29

質問

時刻を "Thu Jun 09 2011 00:00:00 GMT+0530 (India Standard Time) " というフォーマットから YYYY-MM-DD に変換するにはどうすればよいですか。

日付をalert()しようとすると、以下のように表示されます。 - Thu Jun 09 2011 00:00:00 GMT+0530 (インド標準時)

しかし、私はYYYY-MM-DD形式で時間を必要とします。

変換するためのビルドイン関数はありますか?

どのように解決するのですか?

日付の解析は Date コンストラクタを使用して、個々の時間コンポーネントを吐き出します。

function convert(str) {
  var date = new Date(str),
    mnth = ("0" + (date.getMonth() + 1)).slice(-2),
    day = ("0" + date.getDate()).slice(-2);
  return [date.getFullYear(), mnth, day].join("-");
}

console.log(convert("Thu Jun 09 2011 00:00:00 GMT+0530 (India Standard Time)"))
//-> "2011-06-08"

しかし、結果を見ればわかるように、これは日付をローカルのタイムゾーンにパースします。 元のタイムゾーンに基づいた日付を維持したい場合は、文字列を分割して必要な部分を抽出するのが最も簡単な方法です。

function convert(str) {
  var mnths = {
      Jan: "01",
      Feb: "02",
      Mar: "03",
      Apr: "04",
      May: "05",
      Jun: "06",
      Jul: "07",
      Aug: "08",
      Sep: "09",
      Oct: "10",
      Nov: "11",
      Dec: "12"
    },
    date = str.split(" ");

  return [date[3], mnths[date[1]], date[2]].join("-");
}

console.log(convert("Thu Jun 09 2011 00:00:00 GMT+0530 (India Standard Time)"))
//-> "2011-06-09"