Changed DateParser to use only user format and ISO-8601

This commit is contained in:
Frederic Guillot
2016-06-05 21:28:56 -04:00
parent 33098e4e11
commit 656f430632
9 changed files with 154 additions and 35 deletions

View File

@@ -15,6 +15,28 @@ class DateParser extends Base
const DATE_FORMAT = 'm/d/Y';
const DATE_TIME_FORMAT = 'm/d/Y H:i';
/**
* Get date format from settings
*
* @access public
* @return string
*/
public function getUserDateFormat()
{
return $this->configModel->get('application_date_format', DateParser::DATE_FORMAT);
}
/**
* Get date time format from settings
*
* @access public
* @return string
*/
public function getUserDateTimeFormat()
{
return $this->configModel->get('application_datetime_format', DateParser::DATE_TIME_FORMAT);
}
/**
* List of time formats
*
@@ -38,19 +60,29 @@ class DateParser extends Base
*/
public function getDateFormats($iso = false)
{
$iso_formats = array(
$formats = array(
$this->getUserDateFormat(),
);
$isoFormats = array(
'Y-m-d',
'Y_m_d',
);
$user_formats = array(
$userFormats = array(
'm/d/Y',
'd/m/Y',
'Y/m/d',
'd.m.Y',
);
return $iso ? array_merge($iso_formats, $user_formats) : $user_formats;
if ($iso) {
$formats = array_merge($formats, $isoFormats, $userFormats);
} else {
$formats = array_merge($formats, $userFormats);
}
return array_unique($formats);
}
/**
@@ -62,7 +94,9 @@ class DateParser extends Base
*/
public function getDateTimeFormats($iso = false)
{
$formats = array();
$formats = array(
$this->getUserDateTimeFormat(),
);
foreach ($this->getDateFormats($iso) as $date) {
foreach ($this->getTimeFormats() as $time) {
@@ -70,7 +104,7 @@ class DateParser extends Base
}
}
return $formats;
return array_unique($formats);
}
/**
@@ -97,12 +131,30 @@ class DateParser extends Base
$values = array();
foreach ($formats as $format) {
$values[$format] = date($format);
$values[$format] = date($format).' ('.$format.')';
}
return $values;
}
/**
* Get formats for date parsing
*
* @access public
* @return array
*/
public function getParserFormats()
{
return array(
$this->getUserDateFormat(),
'Y-m-d',
'Y_m_d',
$this->getUserDateTimeFormat(),
'Y-m-d H:i',
'Y_m_d H:i',
);
}
/**
* Parse a date and return a unix timestamp, try different date formats
*
@@ -116,7 +168,7 @@ class DateParser extends Base
return (int) $value;
}
foreach ($this->getAllDateFormats(true) as $format) {
foreach ($this->getParserFormats() as $format) {
$timestamp = $this->getValidDate($value, $format);
if ($timestamp !== 0) {