web-dev-qa-db-ja.com

JavaScriptの日時解析

可能性のある複製:
JavaScriptの形式指定で文字列を日時に変換するにはどうすればよいですか?

私はハッシュマップを含むjson応答を持っています;

{"map":{"2012-10-10 03:47:00.0":23.400000000000002,"2012-10-10 03:52:00.0":23.3,"2012-10-10 03:57:00.0":23.3,"2012-10-10 04:02:00.0":23.3,"2012-10-10 04:07:00.0":23.200000000000003,"2012-10-10 04:13:00.0":23.1,"2012-10-10 04:18:00.0":23.1,"2012-10-10 04:23:00.0":23.0,"2012-10-10 04:28:00.0":23.0,"2012-10-10 04:33:00.0":23.0,"2012-10-10 04:38:00.0":22.900000000000002,"2012-10-10 04:43:00.0":22.8,"2012-10-10 04:48:00.0":22.8,"2012-10-10 04:53:00.0":22.700000000000003,"2012-10-10 04:58:00.0":22.6,"2012-10-10 05:03:00.0":22.6,"2012-10-10 05:08:00.0":22.5,"2012-10-10 05:13:00.0":22.5,"2012-10-10 05:18:00.0":22.5,"2012-10-10 05:23:00.0":22.400000000000002}}

私はjsonのdatetime部分を次のようにフォーマットしたいと思います;

dd/mm/yyyy HH:mm:ss

このようにすべてのペア要素を配置したとしましょう。

var myArr = [["2012-10-10 03:47:00.0", 23.400000000000002], ["2012-10-10 03:52:00.0", 23.3], ....];

次に、以下のように日時の部分を解析しようとすると、コンソールにDate {Invalid Date}が表示されます。

new Date(myArr[0][0]);

このタイプの日時をどのようにフォーマットできますか?.

9
vtokmak

以下を試してください:

new Date(Date.parse(myArr[0][0]));

[〜#〜]例[〜#〜]

Date . parse メソッドを使用して、文字列を1970年1月1日00:00:00 UTC以降のミリ秒数に解析します。そのミリ秒数を取り、もう一度 Date メソッドを呼び出して、その時間を日付オブジェクトに変換します。

[〜#〜]編集[〜#〜]

この場合、これは少し見苦しいかもしれませんが、Firefoxが-sおよび00.0

var myArr = [["2012-10-10 03:47:00.0", 23.400000000000002], ["2012-10-10 03:52:00.0", 23.3]];

var date = convertDateTime(myArr[0][0]);
console.log(date);

function convertDateTime(dateTime){
    dateTime = myArr[0][0].split(" ");

    var date = dateTime[0].split("-");
    var yyyy = date[0];
    var mm = date[1]-1;
    var dd = date[2];

    var time = dateTime[1].split(":");
    var h = time[0];
    var m = time[1];
    var s = parseInt(time[2]); //get rid of that 00.0;

    return new Date(yyyy,mm,dd,h,m,s);
}

[〜#〜]例[〜#〜]

23
Chase
function dateFromString(str) {
  var m = str.match(/(\d+)-(\d+)-(\d+)\s+(\d+):(\d+):(\d+)\.(\d+)/);
  return new Date(+m[1], +m[2] - 1, +m[3], +m[4], +m[5], +m[6] * 100);
}

dateFromString(myArr[0][0]); // Sat Oct 10 2012 03:47:00 GMT-0500 (EST)
10
jimbo