【问题标题】:PHP: replace date with stringPHP:用字符串替换日期
【发布时间】:2011-08-15 12:51:24
【问题描述】:

我有一个包含多个日期(从 - 到)的字符串,用“|”分隔,例如:

10.10.-29.10.2011 | 1.11.-31.11.2011

我需要一个代码来比较最新的开始(“从”)日期(在本例中为 1.11.2011),如果该日期早于当前日期,则将整个字符串替换为“CLOSED”。
任何人都可以帮助我吗?

【问题讨论】:

  • 那么 10.10.-29.10.2011 将是 2011 年 10 月 10 日 - 2011 年 10 月 29 日?

标签: php string date replace compare


【解决方案1】:

这样的?

$dates = "10.10.-29.10.2010 | 13.8.-31.11.2011 | 14.8.-31.12.2011";
$datesArr = explode(" | ",$dates);
foreach($datesArr as $k=>$date) {
    $split = explode(".-",$date);
    $from = explode(".",$split[0]); $to = explode(".",$split[1]);
    $from = $from[0].".".$from[1].".".$to[2];
    if(strtotime($from)<time()) unset($datesArr[$k]);
}
if(!empty($datesArr)) {
    if(count($datesArr)==1) $dates = $datesArr[0];
    else {
        $dates = implode(" | ",$datesArr);
    }
}
else $dates = "CLOSED";
echo $dates;

【讨论】:

  • 编辑为我认为您正在寻找的内容。
  • 干得好!作品。还有一件小事...您能否修改代码以删除所有旧日期范围(包括日期后的“|”)并仅保留有效日期,如果所有日期都旧则显示消息已关闭?
  • 出了点问题.. 这个日期:10.10。 - 29.10.2011 显示已关闭,但此日期为 16.9。 - 29.9.2011 自我展示(两个不同的页面)
  • 可能是因为你突然好像在“.”之间加了一个空格。和 ”-”。我现在已经更新了代码以满足您的第二个请求。
  • 感谢您的努力,但仍然无法正常工作。如果日期比今天早,它会显示 CLOSED,但较新的日期什么也不显示……我试过:旧的,旧的,新的 - 什么也不显示。旧、新、新 - 显示两个新日期,正确。新的、旧的、新的 - 显示新的、正确的。
猜你喜欢
  • 2021-04-11
  • 1970-01-01
  • 1970-01-01
  • 2020-10-04
  • 2021-11-20
  • 1970-01-01
  • 2019-03-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多