Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
CRAP
100.00% covered (success)
100.00%
1 / 1
Carbon
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
3
100.00% covered (success)
100.00%
1 / 1
 createFromDatetime
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
3
1<?php
2
3declare(strict_types=1);
4
5namespace Engelsystem\Helpers;
6
7class Carbon extends \Carbon\Carbon
8{
9    public const DATETIME_LOCAL = '!Y-m-d\TH:i';
10
11    public const DATETIME_FALLBACK = '!Y-m-d H:i';
12
13    public const DATETIME_FORMATS = [
14        self::DATETIME_LOCAL,
15        self::DATETIME_FALLBACK,
16        self::DEFAULT_TO_STRING_FORMAT,
17    ];
18
19    /**
20     * Parses HTML datetime-local and ISO date/time strings.
21     *
22     * @return self|null Carbon if parseable, else null
23     * @see self::DATETIME_FORMATS
24     */
25    public static function createFromDatetime(string $value): ?\Carbon\Carbon
26    {
27        foreach (self::DATETIME_FORMATS as $datetimeFormat) {
28            if (self::canBeCreatedFromFormat($value, $datetimeFormat)) {
29                return self::createFromFormat($datetimeFormat, $value);
30            }
31        }
32
33        return null;
34    }
35}