【问题标题】:PHP strftime locale changes on refreshPHP strftime 区域设置在刷新时更改
【发布时间】:2013-11-27 11:34:19
【问题描述】:

我在一个项目中使用 strftime,但在设置语言环境并将其打印出来时遇到了一个奇怪的错误。代码如下:

<?php
date_default_timezone_set('Europe/Berlin');
setlocale(LC_ALL, "de_DE");

echo strftime("%A, den %d. %B %Y um %R", strtotime('2013-11-26 08:33:45'));

?>

输出如下:

Dienstag, den 26. November 2013 um 08:33

这是正确的,但如果我刷新页面,我会得到以下信息(20 次中有一次)

2013 年 11 月 26 日星期二 08:33。

为什么语言会改变?你有什么想法吗?

更新:

我用上面的代码创建了一个文件。它工作正常。在我的项目中,我使用的是 Code Igniter,那里有

date_default_timezone_set('Europe/Berlin');
setlocale(LC_ALL, "de_DE");

在我的根文件夹中的主 index.php 中。我在一个观点中呼应了这一点:

echo strftime("%A, den %d. %B %Y um %R", strtotime('2013-11-26 08:33:45'));

所以问题出在 Code Igniter 上,是否有缓存或某些东西有时会将语言环境更改为英语?

【问题讨论】:

  • 您在回显线上缺少右括号“)”
  • 我只是错过了它,在这篇文章中,在我的代码中它就在那里。所以这不是错误。修好了。
  • 没有解决办法?我也有同样的问题...

标签: php localization strftime


【解决方案1】:

PHP 建议从 4.3.0 开始,尝试所有这些可能的语言环境

setlocale(LC_ALL, 'de_DE@euro', 'de_DE', 'deu_deu');

其次,

注意:在 Windows 上,setlocale(LC_ALL, '') 从 系统的区域/语言设置(可通过控制面板访问)。

【讨论】:

  • 改成setlocale(LC_ALL, 'de_DE@euro', 'de_DE', 'deu_deu'),还是一样...
  • 这并没有解决问题。如果问题出在使用的语言环境上,那么第一次就无法正常工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多