管理时间范围(求和 & 减去)的简单工具。无需任何依赖

1.0.1 2018-08-07 14:11 UTC

This package is not auto-updated.

Last update: 2024-09-23 06:30:28 UTC


README

Build Status Scrutinizer Code Quality Code Coverage Build Status Latest Stable Version License

Donate on PayPal

这个工具能帮我解决什么问题?

使用这个工具,您可以

  • 添加多个时间范围
  • 减去多个时间范围

如何使用这个工具?

很简单...

要添加范围,只需...

require_once __DIR__ . '/vendor/autoload.php';

use Hop\Ranges\Range;
use Hop\Ranges\StdRangesCalculator;

$range1 = new Range(
    new \DateTime('2018-01-01 00:00:00'),
    new \DateTime('2018-01-02 00:05:00')
);

$range2 = new Range(
    new \DateTime('2018-01-02 00:06:00'),
    new \DateTime('2018-01-02 00:07:00')
);

$range3 = new Range(
    new \DateTime('2018-01-02 00:06:30'),
    new \DateTime('2018-01-02 00:10:00')
);

$calculator = new StdRangesCalculator();

$ranges = $calculator->sum(
    $range1,
    $range2,
    $range3
);

print_r($ranges);

// prints out

Array
(
    [0] => Hop\Ranges\Range Object
        (
            [dateFrom:Hop\Ranges\Range:private] => DateTime Object
                (
                    [date] => 2018-01-01 00:00:00.000000
                    [timezone_type] => 3
                    [timezone] => UTC
                )

            [dateTo:Hop\Ranges\Range:private] => DateTime Object
                (
                    [date] => 2018-01-02 00:05:00.000000
                    [timezone_type] => 3
                    [timezone] => UTC
                )

        )

 ---->   // this is merged!
    [1] => Hop\Ranges\Range Object
        (
            [dateFrom:Hop\Ranges\Range:private] => DateTime Object
                (
                    [date] => 2018-01-02 00:06:00.000000
                    [timezone_type] => 3
                    [timezone] => UTC
                )

            [dateTo:Hop\Ranges\Range:private] => DateTime Object
                (
                    [date] => 2018-01-02 00:10:00.000000
                    [timezone_type] => 3
                    [timezone] => UTC
                )

        )

)

要减去范围,请做...

require_once __DIR__ . '/vendor/autoload.php';

use Hop\Ranges\Range;
use Hop\Ranges\StdRangesCalculator;

$range1 = new Range(
    new \DateTime('2018-01-01 00:00:00'),
    new \DateTime('2018-01-05 00:05:00')
);

$range2 = new Range(
    new \DateTime('2018-01-02 00:06:00'),
    new \DateTime('2018-01-02 00:07:00')
);


$calculator = new StdRangesCalculator();

$ranges = $calculator->sub(
    $range1,
    $range2
);

print_r($ranges);

// prints out

Array
(
    [0] => Hop\Ranges\Range Object
        (
            [dateFrom:Hop\Ranges\Range:private] => DateTime Object
                (
                    [date] => 2018-01-01 00:00:00.000000
                    [timezone_type] => 3
                    [timezone] => UTC
                )

            [dateTo:Hop\Ranges\Range:private] => DateTime Object
                (
                    [date] => 2018-01-02 00:05:59.000000
                    [timezone_type] => 3
                    [timezone] => UTC
                )

        )

    [1] => Hop\Ranges\Range Object
        (
            [dateFrom:Hop\Ranges\Range:private] => DateTime Object
                (
                    [date] => 2018-01-02 00:07:01.000000
                    [timezone_type] => 3
                    [timezone] => UTC
                )

            [dateTo:Hop\Ranges\Range:private] => DateTime Object
                (
                    [date] => 2018-01-05 00:05:00.000000
                    [timezone_type] => 3
                    [timezone] => UTC
                )

        )

)

享受吧!

© Tomasz Chmielewski