PHP表格,检查2个日期并不太远

时间:2012-07-05 07:43:55

标签: php javascript

我已经被深深地投入到工作中,我从小就知道普通的HTML(90年代中期)并且我被要求改变PHP中的工作形式,我可以改变由PHP编写的PHP代码其他人,但我无法自己写出来。我把这个形式改成了我想要的方式,但是有一点我想改变,如果有人可以提供帮助,我将不胜感激......

已经在网上搜索网络并尝试了两天,我有以下

 <p class="quest">Date from: <input type="text" name="acc2" class="tcal" value="" /> to: <input type="text" name="acc3" class="tcal" value="" />

它使用javascript弹出日历(tigra日历),然后返回2个日期(acc2和acc3),日期为d / m / Y(DD / MM / YYYY)格式(标准在这里在欧洲/澳大利亚/ NZ)。 我想要做的就是检查差异是否大于42天(6周),如果是,我希望它显示一些带链接的文本(42天或更短时间没问题)。 如果我把这个页面作为测试:

<?php echo($acc3); ?>

然后它在页面上显示1341442800(在选择日期之前),如果用户选择日期,则上述数字保持(非动态)

我想要的是什么? 如果没有,是否可以在提交时检查并弹出警报(没有链接)? 我目前使用Javascript来检查表单,例如:

<script language="javascript" type="text/Javascript">
    <!--
        function collect()  {
            if(document.all.ct.value == "TempAcc")
            {
                if(document.all.acc7.value.length <11)
                {
                    alert("You need to fill in your contact number with your FULL number including STD code.");
                    return false;
                }
            }
        }//end function collect
    //-->
    </script>

任何对此的帮助将非常感谢,请尝试具体使用任何代码,因为我仍然是一个非常初学者。 提前谢谢。

3 个答案:

答案 0 :(得分:1)

这对我有用:Live demo on fiddle.net

// parse dates from DD/MM/YYYY to YYYY/MM/DD
var oldBegin = parseDate("03/06/2012");
var oldEnd = parseDate("07/06/2012");

// calculate difference and format to days
var diff = Math.round((oldEnd - oldBegin)/1000/60/60/24);
alert(diff);


function parseDate(str) {
  var m = str.match(/^(\d{1,2})\/(\d{1,2})\/(\d{4})$/);
  return (m) ? new Date(m[3], m[2]-1, m[1]) : null;
}

修改 Include jQuery到您的网页。它将帮助您使用javascript部分。 给两个输入字段一个唯一的id(比如id =“date1”和id =“date2”),然后在javascript中获取值

$('date1').val();
$('date2').val();

整个代码看起来应该是这样的:

<script type="text/javascript">
//The code will trigger when the user leaves the second input field
$("#date2").focusout(function() {
    // parse dates from DD/MM/YYYY to YYYY/MM/DD
    var date1 = parseDate($('date1').val());
    var date2 = parseDate($('date2').val());

    // calculate difference and format to days
    var diff = Math.round((date2 - date1)/1000/60/60/24);
    alert(diff);


    function parseDate(str) {
      var m = str.match(/^(\d{1,2})\/(\d{1,2})\/(\d{4})$/);
      return (m) ? new Date(m[3], m[2]-1, m[1]) : null;
    }
});
</script>

现在可以添加一些if语句来检查一个输入是否为空。

答案 1 :(得分:0)

以下是PHPJavascript

中的两个问题/答案

PHP

$date1 = "2007-03-24";
$date2 = "2009-06-26";

$diff = abs(strtotime($date2) - strtotime($date1));

$years = floor($diff / (365*60*60*24));
$months = floor(($diff - $years * 365*60*60*24) / (30*60*60*24));
$days = floor(($diff - $years * 365*60*60*24 - $months*30*60*60*24)/ (60*60*24));

printf("%d years, %d months, %d days\n", $years, $months, $days);

的Javascript

var oldBegin = ...
var oldEnd = ...
var newBegin = ...

var newEnd = new Date(newBegin + oldEnd - oldBegin);

答案 2 :(得分:0)

试试这个:

<script type="text/javascript">
function daysBetween() {
    var one = new Date(2012, 0, 1); // YYYY - MM - DD
    var two = new Date(2012, 5, 5); // YYYY - MM - DD

    var one_day=1000*60*60*24

   document.write(Math.ceil((two.getTime()-one.getTime())/(one_day))+" days")
}
</script>