我被要求为我们的计费系统编写一个模块,并使用我习惯的所有功能完成它。它是在英语设置上测试的,但我没有考虑(我也不知道)我们公司使用的实际系统是法语。
我写的代码是......
$due_date = strtotime($next_due_date);
$today = date('Y-m-d');
$today_date = strtotime($today);
if ($due_date > $today_date) {
但是我不熟悉StrFTime并且想知道如何使用它来使这段代码适用于法语区域设置?
答案 0 :(得分:2)
首先,您应该使用setlocale
setlocale(LC_TIME, "fr_FR");
其次,对于比较日期为字符串或整数,您仍应使用strtotime
而不是strftime
。 (或者您可以使用格式为YYYY-mm-dd
strftime
仅用于将日期表示为字符串。
如果您想存储它或操纵它,您应该使用标准格式而不是本地化。见doc
为避免潜在的歧义,最好尽可能使用ISO 8601(YYYY-MM-DD)日期或DateTime :: createFromFormat()。
所以可能的代码
//$next_due_date must be in a standard format like YYYY-mm-dd (but not only)
$due_date = strtotime($next_due_date);
$today_date = time();
if ($due_date > $today_date) {
echo strftime("%c",$due_date) . " is in the future";
}
答案 1 :(得分:-1)
做了一个简单快速的例子。希望这有帮助
<?php
setlocale(LC_ALL, 'fra_fra');
$today = date('Y-m-d');
$date_string = utf8_encode(strftime('%d %B %Y', strtotime($today)));
echo $date_string;
?>