0

2 つの日付を比較するためのタイムスタンプが必要なだけですが、文字列を日付に変換しません。私はこのコードを試しました:

var a_date = new Date('2013-03-25');
var b_date = new Date('25-03-2013');
alert(a_date + '***' + b_date);

Firefox と IE7 の両方で試してみました。Datea_dateは Firefox では動作しますが、IE7 では動作しません (Invalid Date値を与えます) 。IE7 では動作しますが、Firefox では動作しません (値b_dateを与えNaNます)。両方を実行するために 1 つの日付形式のみを使用する方法はありますか?

4

3 に答える 3

1

日付をインスタンス化する方法は4つあります(https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date)。

var d = new Date();
var d = new Date(milliseconds);
var d = new Date(dateString);
var d = new Date(year, month, day, hours, minutes, seconds, milliseconds);

他のフォーマットの場合は、独自のコンバーターを作成する必要があります。jQueryとInternetExplorerで文字列を日付に変換しますか?を参照してください。例えば

于 2013-03-11T06:55:04.077 に答える
0

その作業は私がこのコードを行うことです:

var a_date = document.getElementById('Date_From').value;
var parts1 = a_date.split('-'); 
var b_date = document.getElementById('Date_To').value;
var parts2 = b_date.split('-');

var a_date_1 = new Date( parseInt( parts1[0], 10 ), parseInt( parts1[1], 10 ) - 1, parseInt( parts1[2], 10 ) );
var a_date_2 = new Date( parseInt( parts2[0], 10 ), parseInt( parts2[1], 10 ) - 1, parseInt( parts2[2], 10 ) );
       var date1 = a_date_1.getTime();
       var date2 = a_date_2.getTime();

   if(date1 <= date2) {
      return true;
    } else {
        return false;
    }         

@Salman A と @Juhana に特に感謝します

于 2013-03-11T09:17:47.960 に答える
0

月フィールドに 0 ~ 11 の値を使用するのは、Date オブジェクトの定義です。

String を使用するコンストラクターはシステムに依存していると思います (ロケール/タイムゾーンに依存することは言うまでもありません) ため、年/月/日を個別のパラメーターとして指定するコンストラクターを使用する方がよいでしょう。

ところで、Firefoxでは、

new Date("04/02/2008");

私にとってはうまく機能します-スラッシュは解釈しますが、ハイフンは解釈しません。これは、文字列を使用して Date オブジェクトを作成するのは問題があるという私の主張を証明していると思います。代わりに、月/日/年の明示的な値を使用します。

 new Date(2008, 3, 2);
于 2013-03-11T06:58:00.143 に答える