php - 需要一段日期时间的第一天和最后一天

标签 php laravel datetime php-carbon

我正在与 Carbon period 合作,获取两个日期之间“N”天的间隔。

在每个周期的迭代中,我需要知道如何获取每个周期的第一天和最后一天。

例如:

$period = CarbonPeriod::create('2019-10-01', '30 days', '2020-02-15');
// What I need is
// Period 1: from 2019-10-01 to 2019-10-31
// Period 2: from 2019-11-01 to 2019-11-30
// Period 3: from 2019-12-01 to 2019-12-31
// Period 4: from 2020-01-01 to 2020-01-31
// Period 5: from 2020-02-01 to 2020-02-15

最佳答案

我认为您无法获取每个期间的开始/结束日期,但您可以使用副本/ setter 来获取结束期间的第二天。

$period = CarbonPeriod::create('2019-10-01', '30 days', '2020-02-15');
$start = null;
foreach($period as $key=>$date) {
    if(!$start) {
        echo "Start 1 : ".$period->getStartDate()->toDateString(). " End : ".$date->toDateString()."\n";
        $start = $date->copy()->addDay();
    } else {
        echo "Start 2 : ".$start->toDateString(). " End : ".$date->toDateString()."\n";
    }
    $start = $date->copy()->addDay();
}
if($start->lt($period->getEndDate())) {
    echo "Start : ".$start->toDateString(). " End : ".$period->getEndDate()->toDateString()."\n";
}
//Start : 2019-10-01 End : 2019-10-01
//Start : 2019-10-02 End : 2019-10-31
//Start : 2019-11-01 End : 2019-11-30
//Start : 2019-12-01 End : 2019-12-30
//Start : 2019-12-31 End : 2020-01-29
//Start : 2020-01-30 End : 2020-02-15

由于 2020-01-30 - 2020-02-15 不是 30 天,因此不会将其创建为另一个间隔。如果需要,您必须手动检查是否将其添加到最后几行。

关于php - 需要一段日期时间的第一天和最后一天,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60209343/

相关文章:

javascript - 在 Meteor Mongo 上添加、减去和比较日期和时间

javascript - 获取 d3 以根据时间戳显示正确的日期

php - 从名称列表下拉表单中提取 MySQL INSERT 的 ID

php - Docker Compose - 部署中的符号链接(symbolic link)

javascript - 返回确认功能不起作用

php - 如何在实际服务器上托管使用 laravel 5 制作的网站?

sql - 查找序列中未缺失的列中的上一个数字

php - Blob 还是上传?

javascript - 使用reactjs生成静态标记

mysql - 我如何从 laravel 中的数组中获取值