在一个项目中,我想根据用户区域设置显示日期。
日期存储在 mysql 表中,作为 unix 时间戳。
为了让我在特定的语言环境中显示日期,我有以下代码:
// in my config file:
// $setLocale is from database (examples: en_EN.UTF8 or fr_FR.UTF8 or it_IT.UTF8 etc)
setlocale(LC_ALL, $setLocale);
//in my function file
function my_mb_ucfirst($str, $e='utf-8')
{
$fc = mb_strtoupper(mb_substr($str, 0, 1, $e), $e);
return $fc.mb_substr($str, 1, mb_strlen($str, $e), $e);
}
//and in any php page i want to show dates:
$dateFromDb = 1419980400; // example value from table
$date = my_mb_ucfirst(strftime("%b %d, %G", $dateFromDb));
现在奇怪的部分:
上面的日期 1419980400 给了我两个不同的结果。
echo my_mb_ucfirst(strftime("%b %d, %G", 1419980400));
这给出了2015 年 12 月 31 日
echo date("M d, Y", 1419980400);
这给出了2014 年 12 月 31 日
谁能向我解释为什么会这样?
上述过程是否有错误?
注意:我用三种不同的配置验证了这个错误/错误:
apache 1.3 + php 4.3
apache 2.0 + php 5.3
windows xp + xampp 1.7.4