0

我的代码有问题。显然,我开始使用 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;
}

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

4

5 回答 5

0

尝试使用mktime().

mktime()在 PHP 手册中

于 2012-10-09T06:14:25.287 回答
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

于 2012-10-09T06:14:42.280 回答
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 的值 - 请参阅我更新的 jsfiddle-example

审查php代码后更新

我查看了您的代码 - 我找不到您填充服务器端 php var 的位置this->endDate。根据您的其他问题,如何使用更改事件在 javascript 中添加日期,我不确定问题出在哪里。

  • 如果您在服务器上处理 php 代码,则必须在将 html 呈现给客户端(浏览器)之前填充 expireDate 的值。见public function setEditBallpark()和线$this->endDate = $this->ballparkDetails->getBallparkDetailsEndDate();
  • 如果页面在客户端的浏览器中加载,则只有 html+css+javascript 可用。要填写,this->endDate您必须将客户端的值发布到服务器(普通发布或 ajax)。第 17 行是一条注释# $_POST["enddate"],但唯一可能获取 post 值的地方是$this->endDate = $this->createBallparkController->getFormEndDate();第 75 行的这一行。但是方法名称 function setErrorForm()让我假设此方法与正常的 post 情况无关。
于 2012-10-09T06:31:02.670 回答
0

问题可能是由于 $value = $this->endDate; 在增加月份计数之前检查 $value。我已经检查了您添加 2 个月的执行情况。

<?php
$value='2012/11/15';
$date = date('Y/m/d', strtotime("$value +2 month"));
echo $date;
于 2012-10-09T06:42:38.437 回答
0

试试这个:

$date = date('Y/m/d', strtotime("+2 month", strtotime($value)));
于 2012-10-09T07:02:05.667 回答