在php中显示月份数组中特定格式的日期

我有一个如下所示的 php 代码,其中有一个法国月份数组。


<?php

$months = array(

    1 => "janvier",

    2 => "février",

    3 => "mars",

    4 => "avril",

    5 => "mai",

    6 => "juin",

    7 => "juillet",

    8 => "août",

    9 => "septembre",

    10 => "octobre",

    11 => "novembre",

    12 => "décembre",

);

?>

问题陈述:


我想要实现的是我想以以下格式显示日期:


08 août 2020

对于该月的第一天,将 er 附加到数字后:


e.g. 1er août 2020

这是我尝试过的。虽然它可以工作,Line A prints 08 août 2020但我想知道它是否在所有情况下都有效。这里的所有情况是指该月的所有天。


我已经对 Z 行的值进行了硬编码,但它会改变。


<?php

$months = array(

    1 => "janvier",

    2 => "février",

    3 => "mars",

    4 => "avril",

    5 => "mai",

    6 => "juin",

    7 => "juillet",

    8 => "août",

    9 => "septembre",

    10 => "octobre",

    11 => "novembre",

    12 => "décembre",

);

$this_date="2020-08-08";   // Line Z 

$this_time = strtotime($this_date);

$day = date('d', $this_time);

$month = date('n', $this_time);

$month_fr = $months[$month];

$suffix = $day == 1 ? 'er' : '';

$formatted_new_fr = strftime("%d$suffix " . $month_fr . " %Y", $this_time);

echo $formatted_new_fr;  // Line A

?>


HUH函数
浏览 72回答 1
1回答

qq_花开花谢_0

PHP 已经帮您解决了:)setlocale(LC_TIME, 'fr_FR');$dateString = '2020-08-08';$timestamp = strtotime($dateString);$formattedDate = strftime('%d %B %Y', $timestamp);//setlocale(LC_ALL, Locale::getDefault()); // restore (if neccessary)echo utf8_encode($formattedDate);输出08 août 2020为了得到这1er一天,你可以做你已经做过的事情。只需拆分 strftime(或其结果)即可。参考时间设置语言环境另一个解决方案(尽管会按顺序显示所有日期)$locale = 'fr_FR';$dateString = '2020-08-01';$date = new DateTimeImmutable($dateString);$dateFormatter = new IntlDateFormatter(    $locale,    IntlDateFormatter::FULL,    NULL);$numberFormatter = new NumberFormatter($locale, NumberFormatter::ORDINAL);$ordinalDay = $numberFormatter->format($date->format('d'));$dateFormatter->setPattern('LLLL Y');echo $ordinalDay . ' ' . $dateFormatter->format($date->getTimestamp());输出1er août 2020参考DateFormatter 的模式数字格式化程序
打开App,查看更多内容
随时随地看视频慕课网APP