|
@@ -664,8 +664,11 @@ function api_strtotime($time, $timezone = null) {
|
|
|
*
|
|
|
* @link http://php.net/manual/en/function.strftime.php
|
|
|
*/
|
|
|
-function api_format_date($time, $format = null, $language = null)
|
|
|
-{
|
|
|
+function api_format_date($time, $format = null, $language = null) {
|
|
|
+
|
|
|
+ $system_timezone = date_default_timezone_get();
|
|
|
+ date_default_timezone_set(_api_get_timezone());
|
|
|
+
|
|
|
if (is_string($time)) {
|
|
|
$time = strtotime($time);
|
|
|
}
|
|
@@ -680,72 +683,116 @@ function api_format_date($time, $format = null, $language = null)
|
|
|
if (is_int($format)) {
|
|
|
switch ($format) {
|
|
|
case DATE_FORMAT_ONLY_DAYNAME:
|
|
|
- $datetype = IntlDateFormatter::SHORT;
|
|
|
- $timetype = IntlDateFormatter::NONE;
|
|
|
+ $date_format = get_lang('dateFormatOnlyDayName', '', $language);
|
|
|
+ if (INTL_INSTALLED) {
|
|
|
+ $datetype = IntlDateFormatter::SHORT;
|
|
|
+ $timetype = IntlDateFormatter::NONE;
|
|
|
+ }
|
|
|
break;
|
|
|
case DATE_FORMAT_NUMBER_NO_YEAR:
|
|
|
- $datetype = IntlDateFormatter::SHORT;
|
|
|
- $timetype = IntlDateFormatter::NONE;
|
|
|
- break;
|
|
|
- case DATE_FORMAT_NUMBER:
|
|
|
- $datetype = IntlDateFormatter::SHORT;
|
|
|
- $timetype = IntlDateFormatter::NONE;
|
|
|
+ $date_format = get_lang('dateFormatShortNumberNoYear', '', $language);
|
|
|
+ if (INTL_INSTALLED) {
|
|
|
+ $datetype = IntlDateFormatter::SHORT;
|
|
|
+ $timetype = IntlDateFormatter::NONE;
|
|
|
+ }
|
|
|
break;
|
|
|
+ case DATE_FORMAT_NUMBER:
|
|
|
+ $date_format = get_lang('dateFormatShortNumber', '', $language);
|
|
|
+ if (INTL_INSTALLED) {
|
|
|
+ $datetype = IntlDateFormatter::SHORT;
|
|
|
+ $timetype = IntlDateFormatter::NONE;
|
|
|
+ }
|
|
|
+ break;
|
|
|
case TIME_NO_SEC_FORMAT:
|
|
|
- $datetype = IntlDateFormatter::NONE;
|
|
|
- $timetype = IntlDateFormatter::SHORT;
|
|
|
+ $date_format = get_lang('timeNoSecFormat', '', $language);
|
|
|
+ if (INTL_INSTALLED) {
|
|
|
+ $datetype = IntlDateFormatter::NONE;
|
|
|
+ $timetype = IntlDateFormatter::SHORT;
|
|
|
+ }
|
|
|
break;
|
|
|
case DATE_FORMAT_SHORT:
|
|
|
- $datetype = IntlDateFormatter::LONG;
|
|
|
- $timetype = IntlDateFormatter::NONE;
|
|
|
+ $date_format = get_lang('dateFormatShort', '', $language);
|
|
|
+ if (INTL_INSTALLED) {
|
|
|
+ $datetype = IntlDateFormatter::LONG;
|
|
|
+ $timetype = IntlDateFormatter::NONE;
|
|
|
+ }
|
|
|
break;
|
|
|
case DATE_FORMAT_LONG:
|
|
|
- $datetype = IntlDateFormatter::FULL;
|
|
|
- $timetype = IntlDateFormatter::NONE;
|
|
|
+ $date_format = get_lang('dateFormatLong', '', $language);
|
|
|
+ if (INTL_INSTALLED) {
|
|
|
+ $datetype = IntlDateFormatter::FULL;
|
|
|
+ $timetype = IntlDateFormatter::NONE;
|
|
|
+ }
|
|
|
break;
|
|
|
case DATE_TIME_FORMAT_LONG:
|
|
|
- $datetype = IntlDateFormatter::FULL;
|
|
|
- $timetype = IntlDateFormatter::SHORT;
|
|
|
+ $date_format = get_lang('dateTimeFormatLong', '', $language);
|
|
|
+ if (INTL_INSTALLED) {
|
|
|
+ $datetype = IntlDateFormatter::FULL;
|
|
|
+ $timetype = IntlDateFormatter::SHORT;
|
|
|
+ }
|
|
|
break;
|
|
|
case DATE_FORMAT_LONG_NO_DAY:
|
|
|
- $datetype = IntlDateFormatter::FULL;
|
|
|
- $timetype = IntlDateFormatter::SHORT;
|
|
|
+ $date_format = get_lang('dateFormatLongNoDay', '', $language);
|
|
|
+ if (INTL_INSTALLED) {
|
|
|
+ $datetype = IntlDateFormatter::FULL;
|
|
|
+ $timetype = IntlDateFormatter::SHORT;
|
|
|
+ }
|
|
|
break;
|
|
|
- case DATE_TIME_FORMAT_SHORT:
|
|
|
- $datetype = IntlDateFormatter::FULL;
|
|
|
- $timetype = IntlDateFormatter::SHORT;
|
|
|
+ case DATE_TIME_FORMAT_SHORT:
|
|
|
+ $date_format = get_lang('dateTimeFormatShort', '', $language);
|
|
|
+ if (INTL_INSTALLED) {
|
|
|
+ $datetype = IntlDateFormatter::FULL;
|
|
|
+ $timetype = IntlDateFormatter::SHORT;
|
|
|
+ }
|
|
|
break;
|
|
|
- case DATE_TIME_FORMAT_SHORT_TIME_FIRST:
|
|
|
- $datetype = IntlDateFormatter::FULL;
|
|
|
- $timetype = IntlDateFormatter::SHORT;
|
|
|
+ case DATE_TIME_FORMAT_SHORT_TIME_FIRST:
|
|
|
+ $date_format = get_lang('dateTimeFormatShortTimeFirst', '', $language);
|
|
|
+ if (INTL_INSTALLED) {
|
|
|
+ $datetype = IntlDateFormatter::FULL;
|
|
|
+ $timetype = IntlDateFormatter::SHORT;
|
|
|
+ }
|
|
|
break;
|
|
|
case DATE_TIME_FORMAT_LONG_24H:
|
|
|
- $datetype = IntlDateFormatter::FULL;
|
|
|
- $timetype = IntlDateFormatter::SHORT;
|
|
|
+ $date_format = get_lang('dateTimeFormatLong24H', '', $language);
|
|
|
+ if (INTL_INSTALLED) {
|
|
|
+ $datetype = IntlDateFormatter::FULL;
|
|
|
+ $timetype = IntlDateFormatter::SHORT;
|
|
|
+ }
|
|
|
break;
|
|
|
default:
|
|
|
- $datetype = IntlDateFormatter::FULL;
|
|
|
- $timetype = IntlDateFormatter::SHORT;
|
|
|
+ $date_format = get_lang('dateTimeFormatLong', '', $language);
|
|
|
+ if (INTL_INSTALLED) {
|
|
|
+ $datetype = IntlDateFormatter::FULL;
|
|
|
+ $timetype = IntlDateFormatter::SHORT;
|
|
|
+ }
|
|
|
}
|
|
|
+ } else {
|
|
|
+ $date_format = $format;
|
|
|
}
|
|
|
|
|
|
- // Use ICU
|
|
|
- if (is_null($language)) {
|
|
|
- $language = api_get_language_isocode();
|
|
|
- }
|
|
|
-
|
|
|
- $date_formatter = new IntlDateFormatter(
|
|
|
- $language,
|
|
|
- $datetype,
|
|
|
- $timetype,
|
|
|
- date_default_timezone_get()
|
|
|
- );
|
|
|
-
|
|
|
- $formatted_date = api_to_system_encoding(
|
|
|
- $date_formatter->format($time),
|
|
|
- 'UTF-8'
|
|
|
- );
|
|
|
+ if (0) {
|
|
|
+ //if using PHP 5.3 format dates like: $dateFormatShortNumber, can't be used
|
|
|
+ //
|
|
|
+ // Use ICU
|
|
|
+ if (is_null($language)) {
|
|
|
+ $language = api_get_language_isocode();
|
|
|
+ }
|
|
|
+ $date_formatter = new IntlDateFormatter($language, $datetype, $timetype, date_default_timezone_get());
|
|
|
+ //$date_formatter->setPattern($date_format);
|
|
|
+ $formatted_date = api_to_system_encoding($date_formatter->format($time), 'UTF-8');
|
|
|
|
|
|
+ } else {
|
|
|
+ // We replace %a %A %b %B masks of date format with translated strings
|
|
|
+ $translated = &_api_get_day_month_names($language);
|
|
|
+ $date_format = str_replace(array('%A', '%a', '%B', '%b'),
|
|
|
+ array($translated['days_long'][(int)strftime('%w', $time )],
|
|
|
+ $translated['days_short'][(int)strftime('%w', $time)],
|
|
|
+ $translated['months_long'][(int)strftime('%m', $time) - 1],
|
|
|
+ $translated['months_short'][(int)strftime('%m', $time) - 1]),
|
|
|
+ $date_format);
|
|
|
+ $formatted_date = api_to_system_encoding(strftime($date_format, $time), 'UTF-8');
|
|
|
+ }
|
|
|
+ date_default_timezone_set($system_timezone);
|
|
|
return $formatted_date;
|
|
|
}
|
|
|
|