Passed
Push — spaghetti ( dd673c...d276c8 )
by simpletoimplement
02:07
created

Date::transform()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 11
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 6
nc 1
nop 1
dl 0
loc 11
rs 10
c 0
b 0
f 0
1
<?php declare(strict_types = 1);
2
3
namespace Spaghetti\XLSXParser\Transformer;
4
5
use DateTimeImmutable;
6
7
use function floor;
8
use function gmdate;
9
10
/**
11
 * @internal
12
 */
13
final class Date
14
{
15
    public function transform(float|int $value): DateTimeImmutable
16
    {
17
        $format = 'd-m-Y H:i:s';
18
        $base = 25569;
19
20
        $value = (int) floor(num: $value);
21
        /** @noinspection SummerTimeUnsafeTimeManipulationInspection */
22
        $unix = ($value - $base) * 86400;
23
        $date = gmdate(format: $format, timestamp: $unix);
24
25
        return DateTimeImmutable::createFromFormat(format: '!' . $format, datetime: $date);
26
    }
27
}
28