PHP日期昨天

115 php date

可能重复:
在php中获取今天和昨天的时间戳

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

date("F j, Y");
Run Code Online (Sandbox Code Playgroud)

Kin*_*nch 215

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

date("F j, Y", time() - 60 * 60 * 24);
Run Code Online (Sandbox Code Playgroud)

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

一种现代的oop方法正在使用 DateTime

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

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

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

(因为DateInterval这里是否定的,我们必须add()在这里)

另见:DateTime::sub()DateInterval

  • 这不是一个正确的答案!! 夏令时可达23天和25小时.所以这不是一年2小时给你一个很好的答案! (12认同)
  • 非常好的答案,有很多方法可以做到这一点,但你有简单的方法,简短易懂(对于那些对使用更多内存感兴趣的人而言,OOP一个;) (3认同)
  • @neofutur除了"我们想浪费我们的RAM"之外,当你已经有一个`DateTime`-或者一个`DateInterval`-对象(或两者)时,OOP方法很有用,这可能是OOP-的情况.基于应用程序(例如`$ customer-> expire-> add(DateInterval :: createFromDateString('+ 1 year'))//客户再支付一年的费用.)另请注意,`DateInterval`了解ISO8601的时间间隔,但是`date()`没有.当然最后:选择最适合您需求的那个:) (3认同)
  • @patrick有趣的一点:)是的,你是对的,但这只适用于第一个解决方案,而不是以下利用`DateInterval`. (3认同)
  • 不要忘记在命名空间的上下文中将它用作`\ DateTime`和`\ DateInterval`. (2认同)

Exp*_*lls 138

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

  • +1因为这使得在扫描代码时意图更加明显.自我记录代码和所有这些. (14认同)

小智 100

多么容易:)

date("F j, Y", strtotime( '-1 days' ) );
Run Code Online (Sandbox Code Playgroud)

例:

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

输出:

2018-07-17 07:02:43
Run Code Online (Sandbox Code Playgroud)

  • 我更喜欢这个答案.偏移量('-1')不必是常数:它可以用变量构建,即使有一个循环:`strtotime(' - '.$ s.'days')`其中`$ s`是你要去的多少天(或者如果玩标志的话,那就是前进). (6认同)