Improve datetime display
Use php-intl extension to display datetimes a bit more nicely, depending on the locale. What changes: * the day is no longer displayed * day number and month are ordered according to the locale * the timezone is more readable (UTC+1 instead of CET)
This commit is contained in:
parent
1255a42cfe
commit
52b503105d
8 changed files with 175 additions and 36 deletions
tests
|
@ -23,7 +23,12 @@ class UtilsTest extends PHPUnit_Framework_TestCase
|
|||
|
||||
// Expected log date format
|
||||
protected static $dateFormat = 'Y/m/d H:i:s';
|
||||
|
||||
|
||||
/**
|
||||
* @var string Save the current timezone.
|
||||
*/
|
||||
protected static $defaultTimeZone;
|
||||
|
||||
|
||||
/**
|
||||
* Assign reference data
|
||||
|
@ -31,6 +36,17 @@ class UtilsTest extends PHPUnit_Framework_TestCase
|
|||
public static function setUpBeforeClass()
|
||||
{
|
||||
self::$sidHashes = ReferenceSessionIdHashes::getHashes();
|
||||
self::$defaultTimeZone = date_default_timezone_get();
|
||||
// Timezone without DST for test consistency
|
||||
date_default_timezone_set('Africa/Nairobi');
|
||||
}
|
||||
|
||||
/**
|
||||
* Reset the timezone
|
||||
*/
|
||||
public static function tearDownAfterClass()
|
||||
{
|
||||
date_default_timezone_set(self::$defaultTimeZone);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -286,20 +302,28 @@ class UtilsTest extends PHPUnit_Framework_TestCase
|
|||
/**
|
||||
* Test arrays_combine
|
||||
*/
|
||||
public function testArraysCombination()
|
||||
public function testCartesianProductGenerator()
|
||||
{
|
||||
$arr = [['ab', 'cd'], ['ef', 'gh'], ['ij', 'kl'], ['m']];
|
||||
$expected = [
|
||||
'abefijm',
|
||||
'cdefijm',
|
||||
'abghijm',
|
||||
'cdghijm',
|
||||
'abefklm',
|
||||
'cdefklm',
|
||||
'abghklm',
|
||||
'cdghklm',
|
||||
['ab', 'ef', 'ij', 'm'],
|
||||
['ab', 'ef', 'kl', 'm'],
|
||||
['ab', 'gh', 'ij', 'm'],
|
||||
['ab', 'gh', 'kl', 'm'],
|
||||
['cd', 'ef', 'ij', 'm'],
|
||||
['cd', 'ef', 'kl', 'm'],
|
||||
['cd', 'gh', 'ij', 'm'],
|
||||
['cd', 'gh', 'kl', 'm'],
|
||||
];
|
||||
$this->assertEquals($expected, arrays_combination($arr));
|
||||
$this->assertEquals($expected, iterator_to_array(cartesian_product_generator($arr)));
|
||||
}
|
||||
|
||||
/**
|
||||
* Test date_format() with invalid parameter.
|
||||
*/
|
||||
public function testDateFormatInvalid()
|
||||
{
|
||||
$this->assertFalse(format_date([]));
|
||||
$this->assertFalse(format_date(null));
|
||||
}
|
||||
}
|
||||
|
|
7
tests/languages/bootstrap.php
Normal file
7
tests/languages/bootstrap.php
Normal file
|
@ -0,0 +1,7 @@
|
|||
<?php
|
||||
if (! empty('UT_LOCALE')) {
|
||||
setlocale(LC_ALL, getenv('UT_LOCALE'));
|
||||
}
|
||||
|
||||
require_once 'vendor/autoload.php';
|
||||
|
25
tests/languages/de/UtilsDeTest.php
Normal file
25
tests/languages/de/UtilsDeTest.php
Normal file
|
@ -0,0 +1,25 @@
|
|||
<?php
|
||||
|
||||
require_once 'tests/UtilsTest.php';
|
||||
|
||||
|
||||
class UtilsDeTest extends UtilsTest
|
||||
{
|
||||
/**
|
||||
* Test date_format().
|
||||
*/
|
||||
public function testDateFormat()
|
||||
{
|
||||
$date = DateTime::createFromFormat('Ymd_His', '20170101_101112');
|
||||
$this->assertRegExp('/1. Januar 2017 (um )?10:11:12 GMT\+0?3(:00)?/', format_date($date, true));
|
||||
}
|
||||
|
||||
/**
|
||||
* Test date_format() using builtin PHP function strftime.
|
||||
*/
|
||||
public function testDateFormatDefault()
|
||||
{
|
||||
$date = DateTime::createFromFormat('Ymd_His', '20170101_101112');
|
||||
$this->assertEquals('So 01 Jan 2017 10:11:12 EAT', format_date($date, false));
|
||||
}
|
||||
}
|
25
tests/languages/en/UtilsEnTest.php
Normal file
25
tests/languages/en/UtilsEnTest.php
Normal file
|
@ -0,0 +1,25 @@
|
|||
<?php
|
||||
|
||||
require_once 'tests/UtilsTest.php';
|
||||
|
||||
|
||||
class UtilsEnTest extends UtilsTest
|
||||
{
|
||||
/**
|
||||
* Test date_format().
|
||||
*/
|
||||
public function testDateFormat()
|
||||
{
|
||||
$date = DateTime::createFromFormat('Ymd_His', '20170101_101112');
|
||||
$this->assertRegExp('/January 1, 2017 (at )?10:11:12 AM GMT\+0?3(:00)?/', format_date($date, true));
|
||||
}
|
||||
|
||||
/**
|
||||
* Test date_format() using builtin PHP function strftime.
|
||||
*/
|
||||
public function testDateFormatDefault()
|
||||
{
|
||||
$date = DateTime::createFromFormat('Ymd_His', '20170101_101112');
|
||||
$this->assertEquals('Sun 01 Jan 2017 10:11:12 AM EAT', format_date($date, false));
|
||||
}
|
||||
}
|
25
tests/languages/fr/UtilsFrTest.php
Normal file
25
tests/languages/fr/UtilsFrTest.php
Normal file
|
@ -0,0 +1,25 @@
|
|||
<?php
|
||||
|
||||
require_once 'tests/UtilsTest.php';
|
||||
|
||||
|
||||
class UtilsFrTest extends UtilsTest
|
||||
{
|
||||
/**
|
||||
* Test date_format().
|
||||
*/
|
||||
public function testDateFormat()
|
||||
{
|
||||
$date = DateTime::createFromFormat('Ymd_His', '20170101_101112');
|
||||
$this->assertRegExp('/1 janvier 2017 (à )?10:11:12 UTC\+0?3(:00)?/', format_date($date));
|
||||
}
|
||||
|
||||
/**
|
||||
* Test date_format() using builtin PHP function strftime.
|
||||
*/
|
||||
public function testDateFormatDefault()
|
||||
{
|
||||
$date = DateTime::createFromFormat('Ymd_His', '20170101_101112');
|
||||
$this->assertEquals('dim. 01 janv. 2017 10:11:12 EAT', format_date($date, false));
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue