没有显示添加两个月(PHP)

时间:2012-10-09 06:06:49

标签: php

我的代码存在问题。显然,我开始用PHP编程,对其高级概念一无所知。所以我要求你的帮助。我想在用户输入的结束日期添加2个月。我在下面尝试了这段代码:

protected function inputEndDate() {
    $value = $this->endDate;
    $html = "";
    $html .= '<label for="enddate">End Date:</label>' . PHP_EOL;
    $html .= '<input type="text" readonly name="enddate" id="enddate" value="'.$value.'">';
    $html .= '<input type="button" id="enddatebutton" onclick="getEndDate()">' . PHP_EOL;
    return $html;
}


protected function inputExpiryDate() {
    $value = $this->endDate;
    $date = date('Y/m/d', strtotime("$value +2 month"));
    $html = "";
    $html .= '<label for="expirydate">Expiry Date:</label>';
    $html .= '<input type="text" readonly name="expirydate" id="expirydate" value="'.$date.'">';
    $html .= '<input type="button" id="expirydatebutton" onclick="getExpiryDate()">' . PHP_EOL;
    return $html;
}

但是当我运行程序时,它没有显示正确的值;但它显示了其开始日期的两个月。请帮忙。感谢。

5 个答案:

答案 0 :(得分:0)

尝试使用mktime()

mktime() in the PHP manual

答案 1 :(得分:0)

试试这段代码,它会起作用

$value = $this->endDate; // yyyy-mm-dd format
$date  = strtotime ( '+2 month' , strtotime ( $value ) ) ;
$date  = date ( 'Y/m/d' , $date);

echo $date ;

请参阅工作示例http://codepad.org/RM1aXXWI

答案 2 :(得分:0)

我不确定我是否理解你的问题。

如果我调用php函数inputEndDate(),它会为我呈现这个html

<label for="enddate">End Date:</label>
<input type="text" readonly name="enddate" id="enddate" value="">
<input type="button"     id="enddatebutton" onclick="getEndDate()">

输入字段enddate的值为空,因为我的代码$this->endDate为空。 你在哪里得到或填写$this->endDate

如果所有3个输入字段都在同一页面上,则需要javascript根据endDate的输入更改expireDate的值 - 请参阅my updated jsfiddle-example

审核php代码后更新

我看了你的代码 - 我找不到你填充服务器端php var this->endDate的地方。根据您的其他问题how to use change event to add dates in javascript,我不确定问题所在。

  • 如果您在服务器上处理您的php代码,则在将html呈现给客户端(浏览器)之前,必须已经填充了expireDate的值。请参阅public function setEditBallpark()和第$this->endDate = $this->ballparkDetails->getBallparkDetailsEndDate();
  • 如果页面加载到客户端的浏览器中,则只有html + css + javascript可用。要填充this->endDate,您必须将客户端的值发布到服务器(普通帖子或ajax)。第17行是注释# $_POST["enddate"],但唯一可能获得帖子值的地方是第75行的第$this->endDate = $this->createBallparkController->getFormEndDate();行。但方法名称function setErrorForm()让我假设此方法是与正常的邮报案件无关。

答案 3 :(得分:0)

问题可能是由于$ value = $ this-&gt; endDate;在增加月份计数之前检查$值。我已经检查了你添加2个月的实施情况。

<?php
$value='2012/11/15';
$date = date('Y/m/d', strtotime("$value +2 month"));
echo $date;

答案 4 :(得分:0)

试试这个:

$date = date('Y/m/d', strtotime("+2 month", strtotime($value)));