【发布时间】:2018-11-23 11:19:51
【问题描述】:
我正在创建一个DatePeriod,我想用法语显示月份和日期的名称:
$timeZoneParis = new DateTimeZone('Europe/Paris');
$dateDebutCalendrier = new DateTime('2018-11-01', $timeZoneParis);
$dateFinCalendrier = new DateTime('2018-11-31', $timeZoneParis);
$period = new DatePeriod($dateDebutCalendrier,new DateInterval('P1D'),$dateFinCalendrier);
预期结果:
詹维尔、费弗里尔……
实际结果:
一月、二月……
【问题讨论】:
-
我不确定您所说的“最佳时区”是什么意思?您能否编辑您的问题以澄清 1. 您得到什么结果以及 2. 您期望什么结果?您没有将
DateTimeZone传递给$lastDayThisMonth- 这是故意的还是疏忽? -
@DarraghEnright 不是故意的,我已将代码更改为更好的格式并更新了我的问题 :)
-
我现在明白了。这不是您可以使用
DateTime和DatePeriod直接配置或控制的东西——这是一个基于语言环境的问题,DateTime不支持语言环境。您有几个选择,包括IntlDateFormatter(如果已安装)或strftime()。 Here are some helpful answers -
我试过这个:echo strftime("%d %B", $dateDebutCalendrier->getTimestamp()); 但这仍然是英文
-
@ProjetSin - 查看一周前提出的 dup 问题,它与您的问题非常相似。你和那个作者(kalvn)有某种联系吗?这似乎是StackOverflow déjà-vu 的另一个案例......你能解释一下这个现象吗?谢谢。