1

每个人的另一个 PHP 日期问题 - 我有我的网站的英文版本的当前代码,它运行良好:

$article = &$articles[$i];

if($currentdate != date("F Y", strtotime($article->getDate()))) {   
    $currentdate = date("F Y", strtotime($article->getDate()));                 
    $current_content1 .= "<div class='press-articles-heading'>" . $currentdate . "    </div>";
}   

基本上,这样做是从数据库中提取记录并比较日期,以便月份标题仅显示一次,例如 2012 年 7 月,然后是该月的所有记录,然后是 2012 年 6 月等。

如果我在非英语版本的网站上使用相同的代码,我会遇到错误:

$article = &$articles[$i];

if($currentdate != date("F Y", strtotime($article->getDate()))) {   
    $currentdate = strftime("%B %Y", strtotime($article->getDate()));                 
    $current_content1 .= "<div class='press-articles-heading'>" . $currentdate . "</div>";
}   

这里发生的情况是,尽管它们是相同的,但我得到了每个 db 记录的月份标题。

看不到错误在哪里,有没有人有任何想法?

任何帮助深表感谢。

更新

在发布问题之前,我确实尝试了一些事情,但为了保持问题简单,我认为最好将其保留。

我确实尝试了以下方法:

$article = &$articles[$i];

if($currentdate != date("F Y", strtotime($article->getDate()))) {   
    $translated_date = strftime("%B %Y", strtotime($article->getDate()));                 
    $current_content1 .= "<div class='press-articles-heading'>" . $translated_date . "</div>";
}

但这并没有解决它

4

2 回答 2

1

试试这个:

$article = &$articles[$i];

$timeString = strtotime($article->getDate());
$numericDate = strftime('%m %Y', $timeString);

if($currentDate != $numericDate) {
    $currentDate = $numericDate;
    $translatedDate = strftime('%B %Y', $timeString);                 
    $current_content1 .= "<div class='press-articles-heading'>" . $translatedDate . "</div>";
}

这将根据月份和年份的数值进行比较,但会显示本地化的文本值。我使用额外的变量来缓存一些日期解析结果。

于 2012-08-07T17:51:32.207 回答
0

您正在将 的值与date('F Y')的值进行比较strftime('%B %Y')。那些可能不会匹配。

于 2012-07-30T09:26:24.377 回答