我尝试强制本地更改并以法语获取日期输出的值...这不起作用: 这是代码
setlocale(LC_ALL, 'ca_FR');
echo date("l, F d, Y");
这是服务器设置:PHP版本> = 5.2(5.2.16+最佳)5.2.17和操作系统:Linux
我需要用法语输出日期:mercredi .....
答案 0 :(得分:6)
来自manual:
要使用其他语言格式化日期,您应该使用setlocale()和 strftime()函数而不是date()。
所以使用:
setlocale(LC_ALL, 'ca_FR');
echo strftime("%A, %e %B, %G");
note :还必须在服务器上安装所选的区域设置,因此请检查ca_FR
是否为已安装的区域设置。很多linux系统都有fr_FR
或fr_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 ;
}