git-svn-id: https://svn.fournier38.fr/svn/ProgSVN/trunk@3522 bf3deb0d-5f1a-0410-827f-c0cc1f45334c
50 lines
1.8 KiB
PHP
50 lines
1.8 KiB
PHP
<?php
|
|
/** DomFramework
|
|
@package domframework
|
|
@author Dominique Fournier <dominique@fournier38.fr> */
|
|
|
|
/** Convert a format to another one
|
|
*/
|
|
class convert
|
|
{
|
|
/** Convert Date received in one format to another.
|
|
* If the provided string is not corresponding to the format, generate an
|
|
* exception or return the original string
|
|
* Format used http://php.net/manual/en/datetime.createfromformat.php
|
|
* Do not accept the locale ! The language of the dates is always in english
|
|
* @param string $inputDate The date to modify
|
|
* @param string $inputFormat The input format of the date
|
|
* @param string $outputFormat The output format of the date
|
|
* @param bool|null $exception If set, generate an exception if the provided
|
|
* date is invalid
|
|
* @return string
|
|
*/
|
|
public static function convertDate ($inputDate, $inputFormat, $outputFormat,
|
|
$exception = true)
|
|
{
|
|
if (! is_string ($inputDate))
|
|
throw new \Exception ("The date to convert is not a string", 500);
|
|
if (! is_string ($inputFormat))
|
|
throw new \Exception ("The convert input format is not a string", 500);
|
|
if (! is_string ($outputFormat))
|
|
throw new \Exception ("The convert output format is not a string", 500);
|
|
$date = \DateTime::CreateFromFormat ($inputFormat, $inputDate);
|
|
if ($date === false)
|
|
{
|
|
if ($exception === true)
|
|
throw new \Exception (
|
|
"Invalid date provided or not matching the format", 500);
|
|
return $inputDate;
|
|
}
|
|
$errors = $date->getLastErrors();
|
|
if ($errors["warning_count"] > 0 || $errors["error_count"] > 0)
|
|
{
|
|
if ($exception === true)
|
|
throw new \Exception (
|
|
"Invalid date provided or not matching the format", 500);
|
|
return $inputDate;
|
|
}
|
|
return $date->format ($outputFormat);
|
|
}
|
|
}
|