ExplicitDateTest.php 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. <?php
  2. namespace PhpOffice\PhpSpreadsheetTests\Reader\Xlsx;
  3. use PhpOffice\PhpSpreadsheet\IOFactory;
  4. class ExplicitDateTest extends \PHPUnit\Framework\TestCase
  5. {
  6. /**
  7. * @var string
  8. */
  9. private static $testbook = 'tests/data/Reader/XLSX/explicitdate.xlsx';
  10. public function testPreliminaries(): void
  11. {
  12. $file = 'zip://';
  13. $file .= self::$testbook;
  14. $file .= '#xl/worksheets/sheet1.xml';
  15. $data = file_get_contents($file);
  16. if ($data === false) {
  17. self::fail('Unable to read file');
  18. } else {
  19. // confirm that file contains type "d" cells
  20. self::assertStringContainsString('<c r="A3" s="1" t="d"><v>2021-12-31T23:44:51.894</v></c>', $data);
  21. self::assertStringContainsString('<c r="B3" s="2" t="d"><v>2021-12-31</v></c>', $data);
  22. self::assertStringContainsString('<c r="C3" s="3" t="d"><v>23:44:51.894</v></c>', $data);
  23. }
  24. }
  25. public static function testExplicitDate(): void
  26. {
  27. $spreadsheet = IOFactory::load(self::$testbook);
  28. $sheet = $spreadsheet->getActiveSheet();
  29. // DateTime
  30. $value = $sheet->getCell('A3')->getValue();
  31. $formatted = $sheet->getCell('A3')->getFormattedValue();
  32. self::assertEqualsWithDelta(44561.98948, $value, 0.00001);
  33. self::assertSame('2021-12-31 23:44:51', $formatted);
  34. // Date only
  35. $value = $sheet->getCell('B3')->getValue();
  36. $formatted = $sheet->getCell('B3')->getFormattedValue();
  37. self::assertEquals(44561, $value);
  38. self::assertSame('2021-12-31', $formatted);
  39. // Time only
  40. $value = $sheet->getCell('C3')->getValue();
  41. $formatted = $sheet->getCell('C3')->getFormattedValue();
  42. self::assertEqualsWithDelta(0.98948, $value, 0.00001);
  43. self::assertSame('23:44:51', $formatted);
  44. $spreadsheet->disconnectWorksheets();
  45. }
  46. }