这是我的代码:
$graceperiod = strtotime("+30 day","23-12-2013");
echo $graceperiod;
我得到以下输出:
Sat, 31 Jan 1970 00:00:23 GMT
这一年是错的。知道为什么它没有正确转换?
答案 0 :(得分:1)
strtotime('+30 days', $timestamp);
其中$ timestamp是一个实际的时间戳,因为它不如你所希望的那样可靠
答案 1 :(得分:1)
strtotime
将Unix时间戳作为其第二个参数,因此您需要先将其转换。
以下输出正确:
$graceperiod = date("Y-m-d", strtotime("+30 days",strtotime("23-12-2013")));
echo $graceperiod;
答案 2 :(得分:1)
您可以使用旧的strtotime()
函数(接受时间戳作为第二个参数)或使用DateTime
类:
使用strtotime()
$format = 'd-m-Y';
$timestamp = strtotime( "+30 day",strtotime( "23-12-2013" ) );
echo date( $format, $timestamp );
使用DateTime
类:
$dateTime = DateTime::createFromFormat( $format, '23-12-2013' );
$dateTime->add( new DateInterval( 'P30D' ) );
echo $dateTime->format( $format );
此处P30D
表示30天的期限
使用DateTime
的一个好处是,您可以定义your own format,而无需使用strtotime()
{{1}}
答案 3 :(得分:0)
更改
$graceperiod = strtotime("+30 day","23-12-2013");
到
$graceperiod = strtotime("+30 days","23-12-2013");
30 days
是正确的,而不是30 day
答案 4 :(得分:0)
strtotime
将第二个参数作为时间戳,因此您应该执行以下操作:
$graceperiod = strtotime("+30 day", strtotime("23-12-2013"));
echo date("Y-m-d H:i:s", $graceperiod);
答案 5 :(得分:0)
尝试以下代码。
$date = "23-12-2013";
$graceperiod = date("Y-m-d", strtotime("+30 days",strtotime($date)));
echo $graceperiod;
答案 6 :(得分:0)
strtotime("next month");
或
date('Y-m-d', strtotime("+30 days"));
答案 7 :(得分:0)
代码:
$graceperiod = strtotime('23-12-2013 +30 day');
var_dump(date('Y-m-d', $graceperiod));
结果:
string(10) "2014-01-22"