将月份名称更改为法语

Eva*_*ias 9 php symfony-1.4

我有这个代码:

<?php 
  echo "'".$sgps_newsletter->getEmail()."' demande en ".date('d.M.Y', strtotime($sgps_newsletter->getCreatedAt())) 
?> 
Run Code Online (Sandbox Code Playgroud)

但月份名称用英文表示.我该怎么做才能用法语展示它?我已将settings.yml默认文化更改为法语,但没有任何反应.

Ste*_*ger 17

来自http://php.net/manual/en/function.date.php:

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


Mar*_*era 17

使用strftime:http://php.net/manual/en/function.strftime.php

<?php
setlocale(LC_TIME, "fr_FR");
echo strftime(" in French %d.%M.%Y and");
Run Code Online (Sandbox Code Playgroud)

(不确定%d.%M.%Y但你可以阅读文档)

  • 警告:自 PhP 8.1 起,函数 `strftime` 已被弃用 (2认同)

aca*_*ito 14

我知道这已经过时了,但是对于那些仍然在寻找这个问题的人来说,你在法语上约会的更完整答案是:

//set locale
setlocale(LC_TIME, "fr_FR"); 
Run Code Online (Sandbox Code Playgroud)

然后

//echo date/formatting based on your locale, in this case, for French
echo strftime("le %d %B, %Y", strtotime( $sgps_newsletter->getCreatedAt() ));
//without day of the week = le 18 septembre, 2013
Run Code Online (Sandbox Code Playgroud)

要么

echo strftime("%A le %d %B, %Y", strtotime( $sgps_newsletter->getCreatedAt() ));
//with day of the week = mercredi le 18 septembre, 2013
Run Code Online (Sandbox Code Playgroud)

要么

echo strftime("%d/%m/%Y", strtotime( $sgps_newsletter->getCreatedAt() ))
//numerical, separated by '/' = 18/9/2013
Run Code Online (Sandbox Code Playgroud)


Oli*_*ier 11

# --------------------
# METHOD 1
# --------------------
# set locale first
setlocale (LC_TIME, 'fr_FR.utf8','fra'); 
// setlocale(LC_TIME, 'fr_FR.UTF8');
// setlocale(LC_TIME, 'fr_FR');
// setlocale(LC_TIME, 'fr');
// setlocale(LC_TIME, 'fra_fra');
# Examples using current time
echo strftime('%Y-%m-%d %H:%M:%S');  // 2015-03-02 17:58:50
echo strftime('%A %d %B %Y, %H:%M'); // lundi 02 mars 2015, 17:58
echo strftime('%d %B %Y');           // 02 mars 2015
echo strftime('%d/%m/%y');           // 02/03/15
# Example with given timestamp
$timestamp = time () ; // Any timestamp will do
echo strftime( "%d %B %Y", $timestamp ) ;  // 02 mars 2015

# --------------------
# METHOD 2 
# --------------------
# using arrays without setting the locale ( not recommanded )
$day = array("Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi"); 
$month = array("janvier", "février", "mars", "avril", "mai", "juin", "juillet", "août", "septembre", "octobre", "novembre", "décembre"); 
// Now
$date = explode('|', date("w|d|n|Y"));
// Given time
$timestamp = time () ;
$date = explode('|', date( "w|d|n|Y", $timestamp ));
echo $day[$date[0]] . ' ' . $date[1] . ' ' . $month[$date[2]-1] . ' ' . $date[3] ; // Lundi 02 mars 2015
Run Code Online (Sandbox Code Playgroud)


Hou*_*oun 8

strftime自 PHP 8.1 起,该函数已被弃用。

尝试用这个代替:

$ts = new \DateTime();
$formatter = new \IntlDateFormatter(
    'fr_FR',
    \IntlDateFormatter::MEDIUM,
    \IntlDateFormatter::MEDIUM
);
$formatter->setPattern('d MMM Y');

echo $formatter->format($ts);
Run Code Online (Sandbox Code Playgroud)

  • 不要忘记[启用扩展](/sf/answers/436974891/)来获取它 (2认同)