Passed
Push — master ( 9da522...68fd71 )
by
unknown
12:32 queued 17s
created

MicrosecondsTest::testIssue4476()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 29
Code Lines 23

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 23
dl 0
loc 29
rs 9.552
c 1
b 0
f 0
cc 1
nc 1
nop 0
1
<?php
2
3
declare(strict_types=1);
4
5
namespace PhpOffice\PhpSpreadsheetTests\Writer\Xls;
6
7
use DateTime;
8
use PhpOffice\PhpSpreadsheet\Shared\Date;
9
use PhpOffice\PhpSpreadsheet\Spreadsheet;
10
use PhpOffice\PhpSpreadsheetTests\Functional\AbstractFunctional;
11
12
class MicrosecondsTest extends AbstractFunctional
13
{
14
    /**
15
     * Test save and load XLSX file for round-trip DateTime.
16
     */
17
    public function testIssue4476(): void
18
    {
19
        $date = '2020-10-21';
20
        $time = '14:55:31';
21
        $originalDateTime = new DateTime("{$date}T{$time}");
22
        $spreadsheet = new Spreadsheet();
23
        $sheet = $spreadsheet->getActiveSheet();
24
        $sheet->setCellValue('A1', Date::dateTimeToExcel($originalDateTime));
25
        $sheet->getStyle('A1')
26
            ->getNumberFormat()
27
            ->setFormatCode('yyyy-mm-dd hh:mm:ss.000');
28
        $reloadedSpreadsheet = $this->writeAndReload($spreadsheet, 'Xls');
29
        $spreadsheet->disconnectWorksheets();
30
31
        $rsheet = $reloadedSpreadsheet->getActiveSheet();
32
        /** @var float */
33
        $reread = $rsheet->getCell('A1')->getValue();
34
        $temp = Date::excelToDateTimeObject($reread)
35
            ->format('Y-m-d H:i:s.u');
36
        self::assertSame("{$date} {$time}.000000", $temp, 'round trip works with float value');
37
        $formatted = $rsheet->getCell('A1')->getFormattedValue();
38
        self::assertSame("{$date} {$time}.000", $formatted, 'round trip works with formatted value');
39
        /** @var float */
40
        $temp = Date::stringToExcel($formatted);
41
        $temp = Date::excelToDateTimeObject($temp)
42
            ->format('Y-m-d H:i:s.u');
43
        self::assertSame("{$date} {$time}.000000", $temp, 'round trip works using stringToExcel on formatted value');
44
45
        $reloadedSpreadsheet->disconnectWorksheets();
46
    }
47
}
48