簡體   English   中英

如何在 php 中獲取兩個日期時間戳之間的日期時間范圍

[英]How to get datetime range between two datetimestamps with an interval in php

我正在嘗試編寫一個程序來動態添加間隔並在 php 中的兩個日期之間查找日期時間。

我從用戶那里得到 Startdatetime、Enddatetime、Interval。

如果開始日期是2020-02-17 00:00:00 ,結束日期是2020-02-17 08:00:00 ,並且要添加的時間間隔是 2hrs,

然后我正在嘗試打印所有日期時間范圍,例如

Array(
    [0] => 2020-02-17 00:00:00
    [1] => 2020-02-17 02:00:00
    [2] => 2020-02-17 04:00:00
    [3] => 2020-02-17 06:00:00
    [4] => 2020-02-17 08:00:00
)

我嘗試使用 dateperiod,但不起作用,因為它只給出開始和結束日期

$period = new DatePeriod(
    new DateTime($from_datetime),
    new DateInterval('PT$hoursH'),
    new DateTime($to_datetime)
);

請幫助我獲取所有日期時間范圍。

使用這個

<?php
$begin = new DateTime('2020-02-17 00:00:00');
$end = new DateTime('2020-02-17 08:00:01');
$interval = DateInterval::createFromDateString('2 hours');
$period = new DatePeriod($begin, $interval, $end);

$myDates = [];

foreach ($period as $dt) {
    $myDates[] = $dt->format("Y-m-d H:i:s");
}

現在執行:

print_r($myDates);

給你

Array (
    [0] => 2020-02-17 00:00:00
    [1] => 2020-02-17 02:00:00
    [2] => 2020-02-17 04:00:00
    [3] => 2020-02-17 06:00:00
    [4] => 2020-02-17 08:00:00
)

您可以使用 PHP 的日期解析器,它非常智能。

$startDate     = new DateTime('2020-02-17 00:00:00');
$endDate       = new DateTime('2020-02-17 08:00:00');
$intervalInHrs = 2;

while ($startDate <= $endDate) {
    $output[] = $startDate->format("Y-m-d H:i:s");
    $startDate->modify("+$intervalInHrs Hours");
}

Output:

Array
(
    [0] => 2020-02-17 00:00:00
    [1] => 2020-02-17 02:00:00
    [2] => 2020-02-17 04:00:00
    [3] => 2020-02-17 06:00:00
    [4] => 2020-02-17 08:00:00
)
$from_datetime = new DateTime('2020-02-17 00:00:00');
$to_datetime = new DateTime('2020-02-17 08:00:00');
$hours = 2;
$interval = new DateInterval('PT'.$hours.'H');
$period = new DatePeriod($from_datetime, $interval, $to_datetime);
$dateArray = [];
foreach ($period as $dt) {
    $dateArray[] = $dt->format("Y-m-d H:i:s");
}
print_r($dateArray);exit;

上面的代碼給了我預期的 output 作為

Array
(
[0] => 2021-02-17 00:00:00
[1] => 2021-02-17 02:00:00
[2] => 2021-02-17 04:00:00
[3] => 2021-02-17 06:00:00
[4] => 2021-02-17 08:00:00
)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM