如何在php中用法语硬编码月份名称?
Posted
技术标签:
【中文标题】如何在php中用法语硬编码月份名称?【英文标题】:How to hardcode month names in french in php? 【发布时间】:2019-03-14 14:36:19 【问题描述】:我正在编写下面的 php/javascript 代码,它以法语返回月份名称,但它与我们使用的法语单词不匹配。
<script>
document.getElementById('title_fr').value = "<?php setlocale(LC_TIME, "frc"); echo strftime("%d %b %Y", strtotime( $this_date )); ?>";
</script>
上面的脚本返回法语月份名称,这与我们的法语月份名称集不匹配。
mars
avr.
mai
juin
juil.
août
sept.
oct.
nov.
déc.
以下是我们遵循的法语月份名称集:
janvier
février
mars
avril
mai
juin
juillet
août
septembre
octobre
novembre
décembre
问题陈述:
我想知道我需要在上面的脚本中进行哪些更改,以便它返回我正在关注的法语月份名称。
我相信我需要创建一个如下所示的数组,其中包含法语月份名称。
const monthNamesFr = ["janvier", "février", "mars", "avril", "mai", "juin", "juillet", "août", "septembre", "octobre", "novembre", "décembre"];
【问题讨论】:
所以在(你的)法国,一年只有十个月,这很有趣:-) 根据strftime
上的手册,您可以使用%B
而不是%b
来获取完整的月份名称(基于区域设置)。这样能解决问题吗?
不,有 12 个月。我忘了输入一月/二月。
使用date
仅获取日期的月份部分,然后将其用作访问月份名称数组的索引。将其与您需要在之前或之后输出的其余日期部分连接起来。
@JNevill 成功了,感谢您的帮助。您认为我需要在setlocale(LC_TIME, "frc"); echo strftime("%d %b %Y", strtotime( $this_date ));
此处进行任何更改吗?
【参考方案1】:
因为这似乎可以解决问题(来自 cmets 部分)。无需将日期硬编码到数组中,只需从 strftime()
函数请求整月:
setlocale(LC_TIME, "frc"); echo strftime("%d %B %Y", strtotime( $this_date ));
【讨论】:
成功了。我面临的另一个问题是它的 décembre 和 février,它的回归 d�cembre 和 f�vrier【参考方案2】:我建议在法国使用有效的语言环境,例如 fr_FR
来表示法语。此外,使用%B
作为strftime()
documentation 的完整月份名称。
$this_date = '2018-04-03 12:12:12';
setlocale(LC_TIME, "fr_FR");
echo strftime('%d %B %Y', strtotime($this_date)); // 03 avril 2019
无论系统配置的语言环境如何,这都有效。
【讨论】:
成功了。我面临的另一个问题是它的 décembre 和 février,它的回归 d�cembre 和 f�vrier 这可能是字符编码问题。如果您将 UTF-8 与其他一些编码(如 iso-8859-1以上是关于如何在php中用法语硬编码月份名称?的主要内容,如果未能解决你的问题,请参考以下文章