web-dev-qa-db-ja.com

JavaScriptを使用して、タイムゾーン付きの日付文字列を現地時間の日付オブジェクトに変換します

私の日付文字列の形式は次のようになります:_yyyy-MM-ddTHH:mm:ss-0Z00_

例1:_2010-03-05T07:03:51-0800_

例2:_2010-07-01T20:23:00-0700_

これらの日付文字列を使用して日付オブジェクトを作成する必要があります。 new Date()はこの文字列では機能しません。これらの日付文字列をローカルタイムゾーンを持つ日付オブジェクトに変換するのを手伝ってください。

ありがとうございました!

編集:Pentaho Data Integration 4.3.0でこれを使用しています。

28
Marina

Moment.js などのライブラリを使用してこれを行うことができます。

文字列+形式の解析をご覧ください。

http://momentjs.com/docs/#/parsing/string-format/

次のshouldは、指定した日付を解析しますが、必要に応じて変更する必要がある場合があります。

var oldDate = "2010-03-05T07:03:51-0800";

var dateObj = moment(oldDate, "YYY-MM-DDTHH:mm:ssZ").toDate();

または、MomentのStringパーサーを参照してください。これは、時間の秒とタイムゾーンの間のスペースを除いて、指定した形式であるように見えます。

http://momentjs.com/docs/#/parsing/string/

代替案

これを行う2番目の方法はDate.jsです。これは、フォーマットを適切に解析する別のライブラリです。 http://www.datejs.com

18
Andrew M

例として私のタイムゾーン(AEST)を取り上げます。

function parseDate(str_date) {
  return new Date(Date.parse(str_date));
}


var str_date = "2015-05-01T22:00:00+10:00"; //AEST time
var locale_date = parseDate(str_date);

locale_date:Fri May 01 2015 22:00:00 GMT + 1000(AEST)

var str_date = "2015-05-01T22:00:00+00:00" //UTC time
var locale_date = parseDate(str_date);

locale_date:2015年5月2日(土)08:00:00 GMT + 1000(AEST)

20
Leo

日付文字列:

_var strDate = "2010-07-01T20:23:00-0700";_

ネイティブJS Dateオブジェクトのローカル時間表現:

var ltzDate = (new Date(strDate)).toLocaleString();

11
Joe Johnson