6

我被要求为我们的计费系统编写一个模块,并使用我习惯的所有功能完成它。它在英语设置上进行了测试,但我没有考虑(我也不知道)我们公司使用的实际系统是法语的事实。

我写的代码是...

$due_date = strtotime($next_due_date);
$today = date('Y-m-d');
$today_date = strtotime($today);

if ($due_date > $today_date) {

但是我不熟悉 StrFTime 并且想知道如何使用它来使此代码适用于法语语言环境?

4

2 回答 2

2

首先你应该使用setlocale

setlocale(LC_TIME, "fr_FR");

其次,对于将日期作为字符串或整数进行比较,您仍应使用strtotimeand not strftime。(或者您可以始终使用字符串格式YYYY-mm-dd

strftime仅用于将日期表示为字符串。如果您想存储或操作它,您应该使用标准格式而不是本地化。见文档

为避免潜在的歧义,最好尽可能使用 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";
}
于 2013-01-24T12:41:20.273 回答
-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;
?>
于 2013-01-24T12:35:04.217 回答