0

私は単純な日時の比較に失敗し、日時が異なります。入力はjquery UIのdatetimepickerからのものです。

var dt1 = $('#datetimepicker1').val(); //2012-08-12 13:49
var dt2 = $('#datetimepicker2').val(); //2012-08-14 14:21
if( (dt1!="") && (dt2!="") ){
    var d1 = Date.parse(dt1); // return NaN
    var dd1 = new Date(Date.parse(dt1));    // return Invalid Date
    var ddd1 = dt1.getTime() // added this, the entire script no functioning
    alert (dt1 +":"+ d1 + ":"+ dd1 +"\n"+ ddd1);
}

私がここで間違ったことを知っている人はいますか?JavaScriptのソリューションを好む。

4

5 に答える 5

0

実際、あなたのコードはどういうわけか本当のように見えますが、そうではありません。文字列から解析する場合、Date.parse を使用すると、使用する文字列の形式があります。全部挙げてみました。以下の形式の文字列を渡すようにしてください。

形式は、YYYY-MM-DDTHH:mm:ss.sssZ です。「Z」の部分は、オプションのタイム ゾーンを示します。サブフォームも可能です:

   <ol>
    <li>YYYY
    <li>YYYY-MM
    <li>YYYY-MM-DD
    <li>THH:mm   // example: 'T12:00'
    <li>THH:mm:ss
    <li>THH:mm:ss.sss
    </ol>

例:

var date1=Date.parse("2012-08-14");
var d = Date.parse("January 26, 2011 13:51:50");
var dd=var d = Date.parse('2011-01-26T13:51:50.417') ;

それでは、あなたの質問に当てはめてみましょう。これは、言及された出力で私に働いています

      //var dt1 = $('#datetimepicker1').val(); //2012-08-12 13:49
                   // var dt2 = $('#datetimepicker2').val(); //2012-08-14 14:21
           I realize that at least you are able to get dt1 and dt2 with values I assigned to date1 and date2, if so put the below code and see if you get the output .
        var date1 ="2012-08-12 13:49";
        var date2 ="2012-08-14 14:21";
        var dt1=date1.split(" ").join("T");//2012-08-12T13:49
        var dt2=date2.split(" ").join("T");//=>2012-08-14T14:21

        if((dt1!="") && (dt2!="")){
        alert(dt1);
            var d1 = Date.parse(dt1); // return good output  1344768540000
     var d2 = Date.parse(dt2);  //return 1344943260000 Now you can compare d1 and d2   values

var dd1 = new Date(Date.parse(dt1));  // returned  Sun Aug 12 2012 13:49:00 GMT+0300 (Egypt Standard Time)
            var ddd1 = dd1.getTime(); // work fine 1344768540000 dt1 is a string can't work here

            alert (dt1 +":"+ d1 + ":"+ dd1 +"\n"+ ddd1);   // return   2012-08-12T13:49:1344768540000:Sun Aug 12 2012 13:49:00 GMT+0300 (Egypt Standard Time)
        1344768540000
        }
于 2012-08-12T06:57:31.327 に答える
0
var dt1 = "2012-08-12 13:49";
var dt2 = "2012-08-14 14:21";
if( (dt1!="") && (dt2!="") ){
    var d1 = new Date(dt1.split(" ").join("T")); 
    var d2 = new Date(dt2.split(" ").join("T"));
    var diff = d2 - d1; // difference in milliseconds

    //console.log(d1, d2, diff/(60*60*24*1000));
    alert(d1);
    alert(d2);
    if(diff > 0){
      alert(d1 + " before " + d2);
    }else if(diff < 0){
      alert(d2 + " before " + d1);
    }else{
      alert(d2 + " before " + d1);
    }
    alert(Math.abs(diff/(60*60*24*1000)).toFixed(2) + " days");

}
于 2012-08-12T06:26:41.653 に答える
0

問題で提供されている形式に従って、この方法を試してください2012-08-12 13:49

これでできる日:時間:分で2つの日付の違いを見つけるには、

ライブデモ

function ConvertMilliSecondsToTimeSpan(t){
    var cd = 24 * 60 * 60 * 1000,
        ch = 60 * 60 * 1000,
        d = Math.floor(t / cd),
        h = '0' + Math.floor( (t - d * cd) / ch),
        m = '0' + Math.round( (t - d * cd - h * ch) / 60000);
    return [d, h.substr(-2), m.substr(-2)].join(':');
}

var dt1 = Date.parse("2012-08-12 13:49");
var dt2 = Date.parse("2012-08-11 14:21");

alert("Difference: Days:Hours:Minutes " + ConvertMilliSecondsToTimeSpan(Math.abs(dt2 - dt1)));
​
于 2012-08-12T06:13:55.657 に答える
0

日時の重いアプリを使用していることに気付いた場合は、http://momentjs.com/でネイティブの Date オブジェクトをはるかに柔軟な API でラップします。

于 2012-08-12T08:14:30.540 に答える
0

シンプルで clearn メソッド。追加の js Date オブジェクトを生成せず、解析も必要ありません。

// get epoch of datepicker 1
var dt1 = $('#datetimepicker1').datepicker('getDate').getTime(); 
// get epoch of datepicker 2
var dt2 = $('#datetimepicker2').datepicker('getDate').getTime(); 
// ensure both evaluate to true
if(dt1 && dt2){
     if(dt1 < dt2){
        //dt1 is earlier
     }else if(dt1 > dt2){
        //dt1 is later
     }else{
        //dates are equal
     }
}
于 2012-08-12T07:51:00.210 に答える