web-dev-qa-db-ja.com

カスタム形式のJavascriptで「日付と時刻」文字列を解析します

「2015-01-16 22:15:00」という形式の日付と時刻の文字列を解析する必要があります。これをJavaScript Dateオブジェクトに解析したい。これに関する助けはありますか?

いくつかのjqueryプラグイン、moment.js、date.js、xdate.jsを試しました。まだ運がありません。

13
yuva

Moment.jsでは、 String + Formatコンストラクター を使用してモーメントオブジェクトを作成できます。

var momentDate = moment('2015-01-16 22:15:00', 'YYYY-MM-DD HH:mm:ss');

次に、 toDate()メソッド を使用して、JavaScript日付オブジェクトに変換できます。

var jsDate = momentDate.toDate();
30
moises.vilar
new Date("2015-01-16T22:15:00")

Date.parse() を参照してください。

文字列はISO-8601形式である必要があります。他の形式を解析する場合は、 moment.js を使用します。

moment("2015-01-16 22:15:00").toDate();
7
dusky

より良いソリューション、私は現在date.jsを使用しています- https://code.google.com/p/datejs/

このように私のHTMLページにスクリプトを含めました-

<script type="text/javascript" src="path/to/date.js"></script>

次に、形式を指定して日付文字列「2015-01-16 22:15:00」を解析しました。

var dateString = "2015-01-16 22:15:00";
var date = Date.parse(dateString, "yyyy-MM-dd HH:mm:ss");
7
yuva

私はmoment.jsを使用しようとしていました。しかし、「ReferenceError:moment is not defined」というエラーが発生していたため、今はスキップしなければなりませんでした。今のところ一時的な回避策を使用しています。

function parseDate(dateString) {
    var dateTime = dateString.split(" ");
    var dateOnly = dateTime[0];
    var timeOnly = dateTime[1];

    var temp = dateOnly + "T" + timeOnly;
    return new Date(temp);
}
1
yuva

目的の形式であることを確認し、エラーチェックを行う必要がない場合は、splitを使用して手動で解析できます(必要に応じて置き換えます)。私は自分のプロジェクトで似たようなことをする必要があり(MM/DD/YYYY HH:mm:ss:sss)、あなたのフォーマットに合うようにソリューションを修正しました。 月の1の減算に注意してください。

var str = "2015-01-16 22:15:00"; 
//Replace dashes and spaces with : and then split on :
var strDate = str.replace(/-/g,":").replace(/ /g,":").split(":");
var aDate = new Date(strDate[0], strDate[1]-1, strDate[2], strDate[3], strDate[4], strDate[5]) ; 
1
JSub