用正确的语言输出php日期

时间:2012-10-03 20:32:13

标签: php date

  

可能重复:
  PHP Date function output in Italian

我尝试强制本地更改并以法语获取日期输出的值...这不起作用: 这是代码

setlocale(LC_ALL, 'ca_FR');
echo date("l, F d, Y");

这是服务器设置:PHP版本> = 5.2(5.2.16+最佳)5.2.17和操作系统:Linux

我需要用法语输出日期:mercredi .....

3 个答案:

答案 0 :(得分:6)

来自manual

  

要使用其他语言格式化日期,您应该使用setlocale()和   strftime()函数而不是date()。

所以使用:

setlocale(LC_ALL, 'ca_FR');
echo strftime("%A, %e %B, %G");

note :还必须在服务器上安装所选的区域设置,因此请检查ca_FR是否为已安装的区域设置。很多linux系统都有fr_FRfr_FR.utf8作为法语区域设置

答案 1 :(得分:1)

尝试使用strftime()代替date()strftime documentation

答案 2 :(得分:1)

这是最终的工作代码

//Add a SHORTCODE to get date listing
add_shortcode ('getdate','get_date_listing');
   function get_date_listing ($att) {

    $outputtvar = '';

    // set the default timezone to use. Available since PHP 5.1
    date_default_timezone_set('America/Montreal');

    //ID of the post containing DATE LIST
    $req_id = 901;
    $post = get_page($req_id); 
    $content = apply_filters('the_content', $post->post_content);

    // Strip all <p> tags
    $content = str_replace( "<p>", "", $content );

    // Replace </p> with a known delimiter
    $content = str_replace( "</p>", "|", $content );

    //Separate de dates
    $contentarray = explode( '|', $content );

    //remove the last empty date
    unset($contentarray[count($contentarray)-1]);

    if (qtrans_getLanguage() == 'fr') { setlocale(LC_ALL, 'fr_CA'); $datesetting = "%A, %e %B, %G"; } 
    if (qtrans_getLanguage() == 'en') { setlocale(LC_ALL, 'en_US'); $datesetting = "%A, %B %e, %G";} 

    //prepare the outputt
    $outputtvar .= '<ul>';

    foreach ($contentarray as $key => $value) {
        $timestamp = strtotime($value);
        $localdate = strftime($datesetting,$timestamp);
        $localdate = utf8_encode($localdate);
        $outputtvar .= '<li>' . $localdate . '</li>';
    }

    $outputtvar .= '</ul>';

    return $outputtvar ;

   }