【问题标题】:If a Date exist return a calculated date如果存在日期,则返回计算日期
【发布时间】:2019-11-21 12:41:07
【问题描述】:

我有下面的代码来为日期添加天数。

$date = '[[lbc_dates_lbc_date]]';
$date = date('d F y', strtotime('+28 days', strtotime($date)));
echo $date;

这对于实际存在日期条目的情况非常有效,但是,对于日期条目尚不存在(空白)的情况,它会显示奇数日期。

您能否修改代码以说明是否存在日期添加天数,否则留空?

请看附图(红色为错误,绿色为正确视图)

谢谢

【问题讨论】:

标签: php date if-statement view return-value


【解决方案1】:

strtotime() 在无法解析日期时将返回FALSE。当您在第二次调用strtotime() 时将其用作基准时间时,这将被视为0,即纪元时间。

在尝试使用结果之前检查它。

$parsed = strtotime($date);
if ($parsed) {
    $date = date('d F y', strtotime('+28 days', $parsed));
} else {
    $date = '';
}

【讨论】:

  • 谢谢,我按照建议做了(见下文)$date = '[[lbc_dates_lbc_date|ifnull=ignore]]'; $parsed = strtotime($date); if ($parsed) { $date = date('d F y', strtotime('+28 days', $parsed)); } 其他 { $date = ''; } 现在所有日期都消失了。
【解决方案2】:

您应该使用 DateTime 对象来存储和操作日期。

echo $date !== null ? (new DateTime($date))->add(new DateInterval('P28D'))->format('Your date format here') : '';

https://www.php.net/manual/en/class.datetime.php

基本上,它使用三元运算符来检查 $date 是否为空,如果不是,它为当前日期创建一个新的 DateTime 对象,添加 28 天并以选定的格式回显它。如果 $date 为空,它只会回显一个空字符串 - ''。

编辑:上面只是一个单行示例,一个好的做法是将它放入一个函数中。

【讨论】:

    猜你喜欢
    • 2016-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多