2

我正在尝试编写一个脚本,该脚本将根据输入的值将日期计算到数据库中cdr_original_install_date

如果 if 为空白,我希望它为$cdr_install和输入 NULL $cdr_renew

如果不是,我想$cdr_install成为输入的日期cdr_original_install_date$cdr_renew是相同的日期加上一年。如果$cdr_renew日期尚未过去,我希望将 $cdr_support 的值更改为“初始保修”;

我已经尝试了几种方法来编写它,但唯一有效的是如果没有输入日期 NULL 将保存到数据库中。如果我输入一个日期,我要么得到输入为 1970-01-01 的日期,要么得到一个错误,指出strtotime()参数 2 很长,给出的字符串是指将一年添加到$cdr_install.

if($_POST['cdr_original_install_date'] == ''){
    $cdr_install = 'NULL';
    $cdr_renew = 'NULL';
} else {
    $cdr_install = date('Y-m-d', strtotime($_POST['cdr_original_install_date']));
    $cdr_renew = date('Y-m-d', strtotime($cdr_install,'+ 1 year'));
        if(strtotime($cdr_renew) > time()){
            $cdr_support = 'Initial Waranty';
        }
}

数据库字段只是日期,所以问题似乎不是日期值的格式

4

2 回答 2

3

阅读以下文档strtotime(): http: //php.net/strtotime

它指出:

time [-> 第一个参数]

日期/时间字符串。有效格式在日期和时间格式中进行了说明。

现在 [-> 第二个参数]

时间戳,用作计算相对日期的基础。

因此,只有第一个参数是字符串形式的时间表达式。第二个参数是您开始的日期。(+ 1 year从unix时间戳strtotime($_POST['cdr_original_install_date'])开始)

所以使用:

strtotime('+ 1 year', strtotime($_POST['cdr_original_install_date']));
于 2013-05-20T12:39:17.260 回答
2

应该.不是,

$cdr_renew = date('Y-m-d', strtotime($cdr_install.'+ 1 year'));
于 2013-05-20T12:43:00.583 回答