【问题标题】:PHP date yesterday [duplicate]PHP日期昨天[重复]
【发布时间】:2011-07-22 22:44:24
【问题描述】:

可能重复:
Get timestamp of today and yesterday in php

我想知道是否有一种通过这种格式获取昨天日期的简单方法:

date("F j, Y");

【问题讨论】:

    标签: php date


    【解决方案1】:

    多么容易:)

    date("F j, Y", strtotime( '-1 days' ) );
    

    示例:

    echo date("Y-m-j H:i:s", strtotime( '-1 days' ) ); // 2018-07-18 07:02:43
    

    输出:

    2018-07-17 07:02:43
    

    【讨论】:

    • 我更喜欢这个答案。偏移量('-1')不必是一个常数:它可以用一个变量构建,即使有一个循环:strtotime( '-'.$s.' days' ) 其中$s 是多少天后(或者如果使用符号则向前)你想去。
    • 我五天前就需要了,所以这个最容易修改。
    • 使用Y-m-d 代替Y-m-j 作为ISO 标准日期,j 没有前导零。
    【解决方案2】:

    date() 本身仅用于格式化,但它接受第二个参数。

    date("F j, Y", time() - 60 * 60 * 24);
    

    为了简单起见,我只是从 unix 时间戳中减去 24 小时。

    现代 oop 方法是使用 DateTime

    $date = new DateTime();
    $date->sub(new DateInterval('P1D'));
    echo $date->format('F j, Y') . "\n";
    

    或者在你的情况下(更易读/更明显)

    $date = new DateTime();
    $date->add(DateInterval::createFromDateString('yesterday'));
    echo $date->format('F j, Y') . "\n";
    

    (因为这里DateInterval是负数,所以这里必须add()它)

    另请参阅:DateTime::sub()DateInterval

    【讨论】:

    • 非常好的答案,有很多方法可以做到,但你有一个简单、简短且易于理解的方法(+ OOP 一种,适合那些对使用更多 RAM 感兴趣的人;)
    • @neofutur 除了“我们想浪费我们的 RAM”之外,OOP 方法很有用,当您已经拥有 DateTime- 或 DateInterval-object(或两者)时,在基于 OOP 的应用程序中可能会出现这种情况(例如 $customer->expire->add(DateInterval::createFromDateString('+1 year')) // customer paid for one additional year) 另请注意,DateInterval 理解 ISO8601 的时间间隔,但 date() 不理解。在课程结束时:选择最适合您需求的课程:)
    • 这不是一个正确的答案!!夏令时使一天有 23 小时和 25 小时。所以这不是一年中的两个小时给你一个好的答案!!!
    • @patrick 有趣的一点 :) 是的,你是对的,但这仅适用于第一个解决方案,而不是以下使用 DateInterval 的解决方案。
    • 不要忘记在命名空间的上下文中将其用作\DateTime\DateInterval
    【解决方案3】:

    strtotime(),如date("F j, Y", strtotime("yesterday"));

    【讨论】:

    • +1 因为这使得扫描代码时意图更加明显。自记录代码等等。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-10
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-23
    • 1970-01-01
    相关资源
    最近更新 更多