Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Get list of localized months

Since PHP uses data from ICU in the intl extension, are there ways to get localized month names from within PHP?

While I can get the data from ICU's xml files and extract them into my own set of files, I would much prefer a clean and easier solution if possible.

Finally, are there ways to get the date format (MM/DD/YYYY or DD/MM/YYYY), given the locale from the intl extension?

like image 388
F21 Avatar asked Dec 16 '22 10:12

F21


2 Answers

Not sure what you need the month names for, but if you just want to use translated names for months, strftime() uses the names according to the current locale (use the %B modifier).

If you want a list of month names for some other use you can use strftime() for that too:

$months = array();

for( $i = 1; $i <= 12; $i++ ) {
    $months[ $i ] = strftime( '%B', mktime( 0, 0, 0, $i, 1 ) );
}

For the second question there might be a native function for it but it's not hard to make one yourself:

$currentDate = strftime( '%x', strtotime( '2011-12-13' ) );

$localFormat = str_replace( 
    array( '13', '12', '2011', '11' ),      
    array( 'DD', 'MM', 'YYYY', 'YY' ),
    $currentDate
);
like image 54
JJJ Avatar answered Jan 03 '23 03:01

JJJ


Could you use IntlDateFormatter::getPattern to get the pattern? I don't know about strftime, but I would use the suggestion of formatting with a pattern MMMM to get the month name, through each month. Looks like php.intl doesn't expose the data directly.

like image 41
Steven R. Loomis Avatar answered Jan 03 '23 02:01

Steven R. Loomis