首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >正在处理strtotime,获取预期参数2为长错误

正在处理strtotime,获取预期参数2为长错误
EN

Stack Overflow用户
提问于 2013-05-20 20:34:43
回答 2查看 5.1K关注 0票数 2

我正在尝试编写一个脚本,它将根据为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中的行。

代码语言:javascript
复制
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';
        }
}

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-05-20 20:39:17

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

它规定:

time ->第一个参数

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

现在->第二个参数

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

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

所以使用:

代码语言:javascript
复制
strtotime('+ 1 year', strtotime($_POST['cdr_original_install_date']));
票数 3
EN

Stack Overflow用户

发布于 2013-05-20 20:43:01

它应该是.而不是,

代码语言:javascript
复制
$cdr_renew = date('Y-m-d', strtotime($cdr_install.'+ 1 year'));
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16649661

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档