【问题标题】:Convert strtotime() to StrFTime()将 strtotime() 转换为 StrFTime()
【发布时间】:2013-01-08 05:00:32
【问题描述】:

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

我写的代码是……

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

if ($due_date > $today_date) {

但是我不熟悉 StrFTime,想知道如何使用它来让这段代码适用于法语语言环境?

【问题讨论】:

  • 在法语语言环境中,$next_due_date 将包含什么作为日期的字符串表示形式?
  • 您所面临的具体问题是什么,哪些问题不能正常工作?你能展示一些示例数据吗?

标签: php strtotime strftime whmcs


【解决方案1】:

首先你应该使用setlocale

setlocale(LC_TIME, "fr_FR");

其次,对于将日期作为字符串或 int 进行比较,您仍应使用 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";
}

【讨论】:

    【解决方案2】:

    做了一个简单快速的例子。希望这会有所帮助

    <?php
            setlocale(LC_ALL, 'fra_fra');
    
            $today = date('Y-m-d');
            $date_string = utf8_encode(strftime('%d %B %Y', strtotime($today)));
            echo $date_string;
    ?>
    

    【讨论】:

    • strftime的第二个参数默认为time(),所以这个答案有多余的代码。
    猜你喜欢
    • 2013-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多