Adjustments to DateTime tests
This commit is contained in:
parent
fd2df82faf
commit
e149c1f191
|
@ -89,6 +89,7 @@ $aTests = array(
|
||||||
, '33chartcreate-line.php'
|
, '33chartcreate-line.php'
|
||||||
, '33chartcreate-pie.php'
|
, '33chartcreate-pie.php'
|
||||||
, '33chartcreate-radar.php'
|
, '33chartcreate-radar.php'
|
||||||
|
, '33chartcreate-scatter.php'
|
||||||
, '33chartcreate-stock.php'
|
, '33chartcreate-stock.php'
|
||||||
, '33chartcreate-multiple-charts.php'
|
, '33chartcreate-multiple-charts.php'
|
||||||
, '33chartcreate-composite.php'
|
, '33chartcreate-composite.php'
|
||||||
|
|
|
@ -167,10 +167,17 @@ class Date
|
||||||
public static function excelToDateTimeObject($excelTimestamp = 0, $timeZone = null)
|
public static function excelToDateTimeObject($excelTimestamp = 0, $timeZone = null)
|
||||||
{
|
{
|
||||||
$timeZone = ($timeZone === null) ? self::getDefaultTimezone() : self::validateTimeZone($timeZone);
|
$timeZone = ($timeZone === null) ? self::getDefaultTimezone() : self::validateTimeZone($timeZone);
|
||||||
if (self::$excelCalendar == self::CALENDAR_WINDOWS_1900) {
|
if ($excelTimestamp < 1.0) {
|
||||||
$baseDate = ($excelTimestamp < 60) ? new \DateTime('1899-12-31', $timeZone) : new \DateTime('1899-12-30', $timeZone);
|
// Unix timestamp base date
|
||||||
|
$baseDate = new \DateTime('1970-01-01', $timeZone);
|
||||||
} else {
|
} else {
|
||||||
$baseDate = new \DateTime('1904-01-01', $timeZone);
|
// MS Excel calendar base dates
|
||||||
|
if (self::$excelCalendar == self::CALENDAR_WINDOWS_1900) {
|
||||||
|
// Allow adjustment for 1900 Leap Year in MS Excel
|
||||||
|
$baseDate = ($excelTimestamp < 60) ? new \DateTime('1899-12-31', $timeZone) : new \DateTime('1899-12-30', $timeZone);
|
||||||
|
} else {
|
||||||
|
$baseDate = new \DateTime('1904-01-01', $timeZone);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
$days = floor($excelTimestamp);
|
$days = floor($excelTimestamp);
|
||||||
$partDay = $excelTimestamp - $days;
|
$partDay = $excelTimestamp - $days;
|
||||||
|
@ -178,8 +185,7 @@ class Date
|
||||||
$partDay = $partDay * 24 - $hours;
|
$partDay = $partDay * 24 - $hours;
|
||||||
$minutes = floor($partDay * 60);
|
$minutes = floor($partDay * 60);
|
||||||
$partDay = $partDay * 60 - $minutes;
|
$partDay = $partDay * 60 - $minutes;
|
||||||
$seconds = floor($partDay * 60);
|
$seconds = round($partDay * 60);
|
||||||
// $fraction = $partDay - $seconds;
|
|
||||||
|
|
||||||
$interval = '+' . $days . ' days';
|
$interval = '+' . $days . ' days';
|
||||||
return $baseDate->modify($interval)
|
return $baseDate->modify($interval)
|
||||||
|
@ -195,7 +201,7 @@ class Date
|
||||||
*/
|
*/
|
||||||
public static function excelToTimestamp($excelTimestamp = 0, $timeZone = null)
|
public static function excelToTimestamp($excelTimestamp = 0, $timeZone = null)
|
||||||
{
|
{
|
||||||
return self::excelToDateTimeObject($excelTimestamp, $timeZone)
|
return (int) self::excelToDateTimeObject($excelTimestamp, $timeZone)
|
||||||
->format('U');
|
->format('U');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -27,9 +27,9 @@ class DateTest extends \PHPUnit_Framework_TestCase
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @dataProvider providerDateTimeExcelToPHP1900
|
* @dataProvider providerDateTimeExcelToTimestamp1900
|
||||||
*/
|
*/
|
||||||
public function testDateTimeExcelToPHP1900()
|
public function testDateTimeExcelToTimestamp1900()
|
||||||
{
|
{
|
||||||
$result = call_user_func(
|
$result = call_user_func(
|
||||||
array('\PHPExcel\Shared\Date','setExcelCalendar'),
|
array('\PHPExcel\Shared\Date','setExcelCalendar'),
|
||||||
|
@ -38,16 +38,13 @@ class DateTest extends \PHPUnit_Framework_TestCase
|
||||||
|
|
||||||
$args = func_get_args();
|
$args = func_get_args();
|
||||||
$expectedResult = array_pop($args);
|
$expectedResult = array_pop($args);
|
||||||
if ($args[0] < 1) {
|
$result = call_user_func_array(array('\PHPExcel\Shared\Date', 'excelToTimestamp'), $args);
|
||||||
$expectedResult += gmmktime(0, 0, 0);
|
|
||||||
}
|
|
||||||
$result = call_user_func_array(array('\PHPExcel\Shared\Date', 'ExcelToPHP'), $args);
|
|
||||||
$this->assertEquals($expectedResult, $result);
|
$this->assertEquals($expectedResult, $result);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function providerDateTimeExcelToPHP1900()
|
public function providerDateTimeExcelToTimestamp1900()
|
||||||
{
|
{
|
||||||
return new \PhpSpreadhsheet\unitTests\TestDataFileIterator('rawTestData/Shared/DateTimeExcelToPHP1900.data');
|
return new \PhpSpreadhsheet\unitTests\TestDataFileIterator('rawTestData/Shared/DateTimeExcelToTimestamp1900.data');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -93,9 +90,9 @@ class DateTest extends \PHPUnit_Framework_TestCase
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @dataProvider providerDateTimeExcelToPHP1904
|
* @dataProvider providerDateTimeExcelToTimestamp1904
|
||||||
*/
|
*/
|
||||||
public function testDateTimeExcelToPHP1904()
|
public function testDateTimeExcelToTimestamp1904()
|
||||||
{
|
{
|
||||||
$result = call_user_func(
|
$result = call_user_func(
|
||||||
array('\PHPExcel\Shared\Date','setExcelCalendar'),
|
array('\PHPExcel\Shared\Date','setExcelCalendar'),
|
||||||
|
@ -104,16 +101,13 @@ class DateTest extends \PHPUnit_Framework_TestCase
|
||||||
|
|
||||||
$args = func_get_args();
|
$args = func_get_args();
|
||||||
$expectedResult = array_pop($args);
|
$expectedResult = array_pop($args);
|
||||||
if ($args[0] < 1) {
|
$result = call_user_func_array(array('\PHPExcel\Shared\Date','excelToTimestamp'), $args);
|
||||||
$expectedResult += gmmktime(0, 0, 0);
|
|
||||||
}
|
|
||||||
$result = call_user_func_array(array('\PHPExcel\Shared\Date','ExcelToPHP'), $args);
|
|
||||||
$this->assertEquals($expectedResult, $result);
|
$this->assertEquals($expectedResult, $result);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function providerDateTimeExcelToPHP1904()
|
public function providerDateTimeExcelToTimestamp1904()
|
||||||
{
|
{
|
||||||
return new \PhpSpreadhsheet\unitTests\TestDataFileIterator('rawTestData/Shared/DateTimeExcelToPHP1904.data');
|
return new \PhpSpreadhsheet\unitTests\TestDataFileIterator('rawTestData/Shared/DateTimeExcelToTimestamp1904.data');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -154,10 +148,10 @@ class DateTest extends \PHPUnit_Framework_TestCase
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @dataProvider providerDateTimeExcelToPHP1900Timezone
|
* @dataProvider providerDateTimeExcelToTimestamp1900Timezone
|
||||||
* @group fail19
|
* @group fail19
|
||||||
*/
|
*/
|
||||||
public function testDateTimeExcelToPHP1900Timezone()
|
public function testDateTimeExcelToTimestamp1900Timezone()
|
||||||
{
|
{
|
||||||
$result = call_user_func(
|
$result = call_user_func(
|
||||||
array('\PHPExcel\Shared\Date','setExcelCalendar'),
|
array('\PHPExcel\Shared\Date','setExcelCalendar'),
|
||||||
|
@ -166,15 +160,12 @@ class DateTest extends \PHPUnit_Framework_TestCase
|
||||||
|
|
||||||
$args = func_get_args();
|
$args = func_get_args();
|
||||||
$expectedResult = array_pop($args);
|
$expectedResult = array_pop($args);
|
||||||
if ($args[0] < 1) {
|
$result = call_user_func_array(array('\PHPExcel\Shared\Date','excelToTimestamp'), $args);
|
||||||
$expectedResult += gmmktime(0, 0, 0);
|
|
||||||
}
|
|
||||||
$result = call_user_func_array(array('\PHPExcel\Shared\Date','ExcelToPHP'), $args);
|
|
||||||
$this->assertEquals($expectedResult, $result);
|
$this->assertEquals($expectedResult, $result);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function providerDateTimeExcelToPHP1900Timezone()
|
public function providerDateTimeExcelToTimestamp1900Timezone()
|
||||||
{
|
{
|
||||||
return new \PhpSpreadhsheet\unitTests\TestDataFileIterator('rawTestData/Shared/DateTimeExcelToPHP1900Timezone.data');
|
return new \PhpSpreadhsheet\unitTests\TestDataFileIterator('rawTestData/Shared/DateTimeExcelToTimestamp1900Timezone.data');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,23 +0,0 @@
|
||||||
#Excel DateTimeStamp Adjust Timezone Result Comments
|
|
||||||
22269, TRUE, 'America/New_York', -285138000 // 19-Dec-1960 00:00:00 UST
|
|
||||||
25569, TRUE, 'America/New_York', -18000 // PHP Base Date 01-Jan-1970 00:00:00 UST
|
|
||||||
30292, TRUE, 'America/New_York', 408049200 // 07-Dec-1982 00:00:00 UST
|
|
||||||
39611, TRUE, 'America/New_York', 1213214400 // 12-Jun-2008 00:00:00 UST
|
|
||||||
50424, TRUE, 'America/New_York', 2147454000 // PHP 32-bit Latest Date 19-Jan-2038 00:00:00 UST
|
|
||||||
22345.56789, TRUE, 'America/New_York', -278522534 // 18-May-1903 13:37:46 UST
|
|
||||||
22345.6789, TRUE, 'America/New_York', -278512943 // 18-Oct-1933 16:17:37 UST
|
|
||||||
0.5, TRUE, 'America/New_York', 25200 // 12:00:00 UST
|
|
||||||
0.75, TRUE, 'America/New_York', 46800 // 18:00.00 UST
|
|
||||||
0.12345, TRUE, 'America/New_York', -7334 // 02:57:46 UST
|
|
||||||
41215, TRUE, 'America/New_York', 1351800000 // 02-Nov-2012 00:00:00 UST
|
|
||||||
22269, TRUE, 'Pacific/Auckland', -285076800 // 19-Dec-1960 00:00:00 UST
|
|
||||||
25569, TRUE, 'Pacific/Auckland', 43200 // PHP Base Date 01-Jan-1970 00:00:00 UST
|
|
||||||
30292, TRUE, 'Pacific/Auckland', 408114000 // 07-Dec-1982 00:00:00 UST
|
|
||||||
39611, TRUE, 'Pacific/Auckland', 1213272000 // 12-Jun-2008 00:00:00 UST
|
|
||||||
50423.5, TRUE, 'Pacific/Auckland', 2147475600 // PHP 32-bit Latest Date 19-Jan-2038 00:00:00 UST
|
|
||||||
22345.56789, TRUE, 'Pacific/Auckland', -278461334 // 18-May-1903 13:37:46 UST
|
|
||||||
22345.6789, TRUE, 'Pacific/Auckland', -278451743 // 18-Oct-1933 16:17:37 UST
|
|
||||||
0.5, TRUE, 'Pacific/Auckland', 90000 // 12:00:00 UST
|
|
||||||
0.75, TRUE, 'Pacific/Auckland', 111600 // 18:00.00 UST
|
|
||||||
0.12345, TRUE, 'Pacific/Auckland', 57466 // 02:57:46 UST
|
|
||||||
41215, TRUE, 'Pacific/Auckland', 1351861200 // 02-Nov-2012 00:00:00 UST
|
|
|
@ -0,0 +1,23 @@
|
||||||
|
#Excel DateTimeStamp Timezone Result Comments
|
||||||
|
22269, 'America/New_York', -285138000 // 19-Dec-1960 00:00:00 UST
|
||||||
|
25569, 'America/New_York', -18000 // PHP Base Date 01-Jan-1970 00:00:00 UST
|
||||||
|
30292, 'America/New_York', 408049200 // 07-Dec-1982 00:00:00 UST
|
||||||
|
39611, 'America/New_York', 1213214400 // 12-Jun-2008 00:00:00 UST
|
||||||
|
50424, 'America/New_York', 2147454000 // PHP 32-bit Latest Date 19-Jan-2038 00:00:00 UST
|
||||||
|
22345.56789, 'America/New_York', -278522534 // 18-May-1903 13:37:46 UST
|
||||||
|
22345.6789, 'America/New_York', -278512943 // 18-Oct-1933 16:17:37 UST
|
||||||
|
0.5, 'America/New_York', 25200 // 12:00:00 UST
|
||||||
|
0.75, 'America/New_York', 46800 // 18:00.00 UST
|
||||||
|
0.12345, 'America/New_York', -7334 // 02:57:46 UST
|
||||||
|
41215, 'America/New_York', 1351800000 // 02-Nov-2012 00:00:00 UST
|
||||||
|
22269, 'Pacific/Auckland', -285076800 // 19-Dec-1960 00:00:00 UST
|
||||||
|
25569, 'Pacific/Auckland', 43200 // PHP Base Date 01-Jan-1970 00:00:00 UST
|
||||||
|
30292, 'Pacific/Auckland', 408114000 // 07-Dec-1982 00:00:00 UST
|
||||||
|
39611, 'Pacific/Auckland', 1213272000 // 12-Jun-2008 00:00:00 UST
|
||||||
|
50423.5, 'Pacific/Auckland', 2147475600 // PHP 32-bit Latest Date 19-Jan-2038 00:00:00 UST
|
||||||
|
22345.56789, 'Pacific/Auckland', -278461334 // 18-May-1903 13:37:46 UST
|
||||||
|
22345.6789, 'Pacific/Auckland', -278451743 // 18-Oct-1933 16:17:37 UST
|
||||||
|
0.5, 'Pacific/Auckland', 90000 // 12:00:00 UST
|
||||||
|
0.75, 'Pacific/Auckland', 111600 // 18:00.00 UST
|
||||||
|
0.12345, 'Pacific/Auckland', 57466 // 02:57:46 UST
|
||||||
|
41215, 'Pacific/Auckland', 1351861200 // 02-Nov-2012 00:00:00 UST
|
Loading…
Reference in New Issue