【问题标题】:Strftime with German Date带有德国日期的Strftime
【发布时间】:2012-01-21 05:24:47
【问题描述】:

我正在尝试使用 strftime 以德语打印日期。我已经试过了

date_default_timezone_set('Europe/Berlin');
setlocale(LC_ALL, "de_DE", "de_DE@euro", "deu", "deu_deu", "german");
$time = strftime("%B", 1323956220);
echo $time;  //I want to see "Dezember", but I see "December" instead

但它没有工作。我错过了什么吗?

编辑:对不起,我错过了 strftime 功能:P

【问题讨论】:

  • 你能展示你的整个代码吗?
  • 请发布您希望如何显示日期的确切示例。
  • 对不起,我忘记了 strftime 函数,duh :P
  • 它似乎可以工作,它可能是在您的代码中的某个地方重置了语言环境吗?
  • 检查您的首选语言环境:$loc_de = setlocale(LC_TIME, "de_DE@euro", "de_DE", "de", "ge", "german"); echo "Locale: $loc_de";

标签: php strftime


【解决方案1】:

我的猜测:语言环境在您的机器上实际上称为de_DE.utf8(它在我的机器上)。这对你有用吗?

setlocale(LC_ALL, "de_DE.utf8"); // or LC_TIME
echo strftime('%B', 1323956220);

顺便说一句:在 Linux 上,您可以使用 locale -a 查看可用的内容。

【讨论】:

  • 完美运行!很简单!谢谢! :)
  • +1 for locale -a(即使很明显......我忘了检查服务器)
  • 是的,你最后需要.utf8。我只是使用de_DE,我可以在strftime 格式的日期中获得“Januar”,但不能获得“März”。
【解决方案2】:

您需要安装国际化扩展,但我建议使用 IntlDateFormatter class

先看一下手册,但一个简单的示例可能如下所示:

$fmt = datefmt_create("de_DE", IntlDateFormatter::FULL, IntlDateFormatter::NONE, 'Europe/Berlin', IntlDateFormatter::GREGORIAN);
echo datefmt_format($fmt , time());

哪个输出这个:

Donnerstag,2011 年 12 月 15 日

【讨论】:

    猜你喜欢
    • 2018-10-12
    • 1970-01-01
    • 2017-12-14
    • 2017-02-06
    • 1970-01-01
    • 1970-01-01
    • 2020-02-21
    • 2019-07-19
    • 1970-01-01
    相关资源
    最近更新 更多