2

これを正しく書くにはどうすればよいですか?publish_start 日から publish_end 日までに何日経過したかを確認したいのですが、30 日を超えるとメッセージが表示されます。

var a = new Date("<?php echo $this->item->publish_start; ?>");
var b = a.getDate();

var c = new Date("<?php echo $this->item->publish_end; ?>");
var d = c.getDate();

var e =  d - b ;

    if( e > 30) {
        alert("<?php echo JText::_('You cant put more than 30 days'); ?>");
                return false;
     }
4

3 に答える 3

3

編集:明確化後に更新

PHP で日付の違いを見つけて、その値を JavaScript に渡す方がよいでしょう。

これら 2 つの変数の日付形式はわかりませんが、UNIX タイムスタンプの場合は次のようにできます。

var e = <?php echo floor(strtotime($this->item->publish_end)-strtotime($this->item->publish_start))/86400); ?>
if( e > 30) {
    alert("<?php echo JText::_('You cant put more than 30 days'); ?>");
            return false;
}
于 2012-06-25T00:48:06.540 に答える
1

getTime() 関数を使用して、ミリ秒の差を取得します。

if(d.getTime() - b.getTime() > 2592000000)

(30 日は 2 592 000 000 ミリ秒)

于 2012-06-25T00:47:47.070 に答える
0

a と c の両方を変換し、それらをエポック タイムスタンプ (1970 年 1 月 1 日からの秒数、UNIX タイムスタンプ) に変換します。両者の差をとってください。結果を (1 分間で 60 秒 * 1 時間で 60 分 * 1 日で 24 時間) で割ると、日数の差が得られます。

于 2012-06-25T00:49:37.383 に答える