我正在尝试编写一个脚本,它将根据为cdr_original_install_date输入的值计算日期到数据库中。
如果If为空,我希望它为$cdr_install和$cdr_renew都输入NULL。
如果不是,我希望$cdr_install是在cdr_original_install_date中输入的日期,$cdr_renew是相同的日期加一年。如果保修日期未过,我希望它将$cdr_support的值更改为“Initial $cdr_renew”;
我尝试过几种方法,但唯一有效的方法是,如果没有输入日期,则将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';
}
}数据库字段只是日期,所以问题似乎不是日期值的格式问题
发布于 2013-05-20 20:39:17
阅读strtotime()的文档:http://php.net/strtotime
它规定:
time ->第一个参数
日期/时间字符串。有效格式以日期和时间格式进行说明。
现在->第二个参数
时间戳,用作计算相对日期的基础。
因此,只有第一个参数是字符串形式的时间表达式。第二个参数是您开始的日期。(从unix时间戳strtotime($_POST['cdr_original_install_date'])开始的+ 1 year)
所以使用:
strtotime('+ 1 year', strtotime($_POST['cdr_original_install_date']));发布于 2013-05-20 20:43:01
它应该是.而不是,
$cdr_renew = date('Y-m-d', strtotime($cdr_install.'+ 1 year'));https://stackoverflow.com/questions/16649661
复制相似问题