从时间戳(PHP)获得+30天

时间:2014-12-22 11:30:38

标签: php date unix-timestamp

这是我的代码:

$graceperiod = strtotime("+30 day","23-12-2013");
echo $graceperiod;

我得到以下输出:

Sat, 31 Jan 1970 00:00:23 GMT

这一年是错的。知道为什么它没有正确转换?

8 个答案:

答案 0 :(得分:1)

如果你不知道它的作用是什么,那么strtotime是一个“危险”的功能。 你应该这样试试

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

Reference

答案 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"