从 DateTime 中减去天数
Subtracting days from a DateTime
我就开门见山了。这是我的功能失调代码,它与通过从结束时间减去间隔来找到开始时间有关:
$timeEnd = "2015-01-08T12:53:13-05:00"; //retrieved from bot crawler
$interval = date_interval_create_from_date_string("10 days");
$timeEndOb = new DateTime($timeEnd);
$timeStartOb = $timeEndOb->sub($interval);
$timeStart = $timeStartOb->format('Y-m-d H:i:s');
echo $timeStart;
//echoing 2015-01-08 12:53:13
我的愚蠢问题是什么?
您只需使用 strtotime
函数和 date
函数就可以做到这一点
$timestamp_end = strtotime("2015-01-08T12:53:13");// Note, I removed the timezone
$date_start = date('Y-m-d H:i:s', strtotime('-10 days', $timestamp_end));
$date_end = date('Y-m-d H:i:s', $timestamp_end);
echo $date_start.' to '.$date_end;
2014-12-29 12:53:13 至 2015-01-08 12:53:13
您可以使用clone
克隆对象:
$timeEnd = '2015-01-08T12:53:13-05:00';
$timeEndOb = new DateTime($timeEnd);
$timeStartOb = clone $timeEndOb;
$timeStartOb->modify('-10 days');
echo $timeStart = $timeStartOb->format('c');
或者您可以使用 DateTimeImmutable
PHP>=5.5.0 class 其行为与 DateTime
相同,除了它从不修改自身,而是 returns 一个新对象:
$timeEnd = '2015-01-08T12:53:13-05:00';
$timeEndOb = new DateTimeImmutable($timeEnd);
$timeStartOb = $timeEndOb->modify('-10 days');
echo $timeStart = $timeStartOb->format('c');
我就开门见山了。这是我的功能失调代码,它与通过从结束时间减去间隔来找到开始时间有关:
$timeEnd = "2015-01-08T12:53:13-05:00"; //retrieved from bot crawler
$interval = date_interval_create_from_date_string("10 days");
$timeEndOb = new DateTime($timeEnd);
$timeStartOb = $timeEndOb->sub($interval);
$timeStart = $timeStartOb->format('Y-m-d H:i:s');
echo $timeStart;
//echoing 2015-01-08 12:53:13
我的愚蠢问题是什么?
您只需使用 strtotime
函数和 date
函数就可以做到这一点
$timestamp_end = strtotime("2015-01-08T12:53:13");// Note, I removed the timezone
$date_start = date('Y-m-d H:i:s', strtotime('-10 days', $timestamp_end));
$date_end = date('Y-m-d H:i:s', $timestamp_end);
echo $date_start.' to '.$date_end;
2014-12-29 12:53:13 至 2015-01-08 12:53:13
您可以使用clone
克隆对象:
$timeEnd = '2015-01-08T12:53:13-05:00';
$timeEndOb = new DateTime($timeEnd);
$timeStartOb = clone $timeEndOb;
$timeStartOb->modify('-10 days');
echo $timeStart = $timeStartOb->format('c');
或者您可以使用 DateTimeImmutable
PHP>=5.5.0 class 其行为与 DateTime
相同,除了它从不修改自身,而是 returns 一个新对象:
$timeEnd = '2015-01-08T12:53:13-05:00';
$timeEndOb = new DateTimeImmutable($timeEnd);
$timeStartOb = $timeEndOb->modify('-10 days');
echo $timeStart = $timeStartOb->format('c');