繁体   English   中英

将一个日期范围分为给定日期的两个单独的日期范围

[英]Split a single date range into two separate date range with a given date

我正在尝试使用PHP将单个日期范围划分为具有给定最后日期的两个单独的日期范围。

例如,此日期范围“ 2016-01-01 00:00:00”至“ 2019-02-14 23:59:59”将在下面具有这两个日期范围。 鉴于单独的日期是2018年1月1日。

  1. '2016-01-01 00:00:00'-'2017-12-31 23:59:59'
  2. '2018-01-01 00:00:00'-'2019-02-14 23:59:59'

示例代码如下。

$start = '2016-01-01 00:00:00';
$end = '2019-02-14 23:59:59';
$sepDate = '2018-01-01';
$dateRange = separateDate($start, $end, $sepDate);

function separateDate($start, $end, $sepDate){
    //separate date function 
}

Output:
$dateRange[0]['start']  //'2016-01-01 00:00:00'
$dateRange[0]['end']    //'2017-12-31 23:59:59'

$dateRange[1]['start']  //'2018-01-01 00:00:00'
$dateRange[1]['end']    //'2019-02-14 23:59:59'

这可以相当简单地完成。 只需将分隔符转换为时间戳即可,这样您可以减去一秒钟以获得第一个期间的结束日期。 其余的非常简单。

function separateDate($start, $end, $sepDate){
    return [
        [
            "start" => strtotime($start),
            "end" => strtotime($sepDate) - 1
        ],
        [
            "start" => strtotime($sepDate),
            "end" => strtotime($end)
        ]
    ];
}

我将所有日期时间都转换为时间戳,以保持输出一致。 再次将它们转换为日期并不难。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM