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    ];
17
18    /**
19     * Parses HTML datetime-local and ISO date/time strings.
20     *
21     * @return self|null Carbon if parseable, else null
22     * @see self::DATETIME_FORMATS
23     */
24    public static function createFromDatetime(string $value): ?\Carbon\Carbon
25    {
26        foreach (self::DATETIME_FORMATS as $datetimeFormat) {
27            if (self::canBeCreatedFromFormat($value, $datetimeFormat)) {
28                return self::createFromFormat($datetimeFormat, $value);
29            }
30        }
31
32        return null;
33    }
34}