Skip to main content

This site requires you to update your browser. Your browsing experience maybe affected by not having the most up to date version.

Customising the CMS /

Date formating


Reply


823 Views

Avatar
Pike

Community Member, 42 Posts

15 January 2010 at 4:28am

Hi to all,

Methods like .Nice, .Nice24, Format, FormatI18N is problematic for me.

Becouse e.g.:
1.   %e parameter not works under OS Windows
2.   I’m Czech and results from strftime() I must convert to utf8:

$MyDate = strftime( $date_formats[$date_formats_item], strtotime( $this->value ) );
if ( !$ut8encode ) return $MyDate;
return ( strtoupper( substr( PHP_OS, 0, 3 ) ) === 'WIN' ? iconv("CP1250", "UTF-8", $MyDate ) : utf8_encode( $MyDate ) );

So I arbitrated for custom solution:

I’ve global variable $date_formats in mysite/_config

$locale_lang = i18n::get_lang_from_locale(i18n::get_locale());
if ( preg_match("/cs|sk|de/i", $locale_lang ) ) {
$date_formats    = array(
   'date_time_iso'   => '%Y-%m-%d %H:%i:%s',
   'date_time'   => '%e.%c.%Y %H:%i:%s',
   'date_hm'   => '%e.%c.%Y %H:%i',
   'date_named_full'=> '%W, %e. %M %Y %H:%i:%s',
   'date_named'   => '%W, %e. %N %Y',
   'date'      => '%e.%c.%Y',
   'time'      => '%H:%i:%s',
   'hm'      => '%H:%i'
   );
}
else {
   $date_formats    = array(
   'date_time_iso'   => '%Y-%m-%d %H:%i:%S',
   'date_time'   => '%m.%d.%Y %h:%i:%s',
   'date_hm'   => '%m.%d.%Y %h:%i %r',
   'date_named_full'=> '%W, %M %e, %Y %h:%i %r',
   'date_named'   => '%W, %M %e, %Y',
   'date'      => '%M %e, %Y',
   'time'      => '%h:%i:%s %r',
   'hm'      => '%h:%i %r'
   );
}

Then I can call this method:

public function MyDateFormat( $date_formats_item, $ut8encode = true ) {
global $date_formats;

   $locale_lang   = i18n::get_locale();
   $ls_time_names= DB::query( "SET lc_time_names='$locale_lang'");
   $MyDate    = DB::query( "SELECT DATE_FORMAT( '$this->value', '$date_formats[$date_formats_item]' )")->value();
   return $MyDate;
}

My problem is, that I must add this method to Date class, SSDDatetime class and Time class.
My question is:
Where can I put my function MyDateFormat to be visible for all 3 classes?
Or how can I extend all 3 classes by my method MyDateFormat in the one place?
Help me, please……..