JavaScriptでDateTime文字列を解析する


回答:


140

見る:

コード:

var strDate = "03.09.1979";
var dateParts = strDate.split(".");

var date = new Date(dateParts[2], (dateParts[1] - 1), dateParts[0]);

8
おっと…ちょっとブーブー-日付コンストラクタは実際には次のようになります:new Date(year、month、date [、hour、minute、second、millisecond])したがって、コンストラクタ内のdatePartsの順序を変更する必要があります。
サルマンA

6
別のブーブー。JavaScriptの日付コンストラクタは、月の扱い方がおかしいです。上のコードの行は次のようになります。var date = new Date(dateParts [2]、dateParts [1]-1、dateParts [0]);
エリアスザマリア

1
@ mikez302、あなたは正しい。リンクされたMDCリファレンスもそれを指摘しています。コードが修正されました
ジョナサンフィンランド、2010年

mmm、しかしstrDateをチェックする方法は "30.30.2000"のような無効な値を持っていますか?
Dr No.

2
@ user674887、解析後に値を比較できます。例:dateParts [1] -1 == date.getMonth()
Jonathan Fingland

51

jQuery UIを使用している場合は、次のコマンドで任意の日付をフォーマットできます。

<html>
    <body>
        Your date formated: <span id="date1"></span><br/>
    </body>
</html>

 

var myDate = '30.11.2011';
var parsedDate = $.datepicker.parseDate('dd.mm.yy', myDate);

$('#date1').text($.datepicker.formatDate('M d, yy', parsedDate));

http://jsfiddle.net/mescalito2345/ND2Qg/14/


21
+1私は完全に範囲外であるとは思いません、JavaScriptとJQueryは一般的な組み合わせです。
djna 2012

回答は、OPでタグ付けまたは言及されていないライブラリに依存するべきではありません。jQueryを日付ライブラリとして使用することは、3行の関数が同じ仕事を行うことができる場合、大過剰です。
RobG

9

このコードを使用して、文字列が有効な日付かどうかを確認します

var dt = new Date(txtDate.value)
if (isNaN(dt))


これは有効な日付をまったくテストしません。Dateコンストラクターが入力から有効な日付を作成できるかどうかをテストします。2つは同じものではありません。
RobG 2016年

6

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

moment.jsを使用する場合は、「文字列」+「フォーマット」モードを使用できます

moment(String, String);
moment(String, String, String);
moment(String, String, Boolean);
moment(String, String, String, Boolean);

例:

moment("12-25-1995", "MM-DD-YYYY");

2
MomentJSは12.4kbのgzip圧縮されていますが、純粋なJavaScriptを使用するには数百バイトしか必要としないため、ほとんどの場合、MomentJSはやりすぎです。開発者には便利ですが、Webサイトの速度が低下します。価値がない。
ラプター

3

IEで次のコードを使用しました。(IE8互換)

var dString = "2013.2.4";
var myDate = new Date( dString.replace(/(\d+)\.(\d+)\.(\d+)/,"$2/$3/$1") );
alert( "my date:"+ myDate );


2

日付オブジェクトを使用:

var time = Date.parse('02.02.1999');
document.writeln(time);

ギブ:917902800000


16
new Date(Date.parse('02.02.1999'))
デューク

+1 For Duke new Date(Date.parse('02.02.1999'))がJavascript についてコメントする
Jack

現在の2つ以上のブラウザーでNaNを返します。Date.parseが誤った結果を返す理由を
RobG

@Duke — 一部のブラウザでは無効な日付を含め、new Date(Date.parse('02.02.1999'))と同じ結果が生成されます。組み込みのパーサーを使用することは、おそらくタイムスタンプを解析する最悪の方法です。new Date('02.02.1999')
RobG

2

この関数は、無効な29.2.2001日付も処理します。

function parseDate(str) {
    var dateParts = str.split(".");
    if (dateParts.length != 3)
        return null;
    var year = dateParts[2];
    var month = dateParts[1];
    var day = dateParts[0];

    if (isNaN(day) || isNaN(month) || isNaN(year))
        return null;

    var result = new Date(year, (month - 1), day);
    if (result == null)
        return null;
    if (result.getDate() != day)
        return null;
    if (result.getMonth() != (month - 1))
        return null;
    if (result.getFullYear() != year)
        return null;

    return result;
}

0

このタイプのコードを作成するだけで日付をフォーマットできます。

 // for eg.
              var inputdate=document.getElementById("getdate").value);
                 var datecomp= inputdate.split('.');

                Var Date= new Date(datecomp[2], datecomp[1]-1, datecomp[0]); 
                 //new date( Year,Month,Date)

jqueryタグがないため、jqueryではなくjavascriptを使用することになっています
Sagar

幸せ...意味は、ただシナリオを理解することです
Bachas

上手。あなたの例は、Martin Staufcikの例と何ら変わらないと思います。実際、彼の回答には、無効な日付を処理するための追加のロジックがあります。
Sagar

Martin Staufcikは、一般的に発生しない条件を処理します。無効にすることができるカレンダーを教えてもらえますか?Martin Staufcikが処理する時間とともに日付を処理することもできれば、はるかに良いでしょう。
Bachas 2017
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.