2

评论是我看到的输出。帮助!

echo date("Y-m-t", strtotime("2012-07-31 -1 month")); //2012-07-31
echo date("Y-m-t", strtotime("2012-07-31 -2 month")); //2012-05-31

7 月有 31 天,所以不能按 8 月 1 日处理,对吧?即使是这样,第二行也应该起作用。对?!

谢谢!

4

2 回答 2

1

这里发生的情况是,“7-31”减去一个月得出“6-31”,转换为“7-1”,即要求该月的最后一天,得出“7-31” .

当您想要进行月份数学计算时,几乎总是(如果不是总是)使用 mktime 来构建时间会更好。

$month = 7;
echo date("Y-m-t", mktime(0, 0, 0, $month - 1, 1, 2012)); //2012-06-30

请注意,在 mktime 中进行月份数学运算时,始终将“1”作为日期。或者真的任何东西,只要它是 28 或更低。

于 2012-08-03T13:31:57.167 回答
-1

你可以这样做:

$month  = date('m') ;
$day    = date('d') ;
$year   = date('Y') ;
// ----
$current    = mktime( 0, 0, 0, $month , $day, $year);
$yesterday  = mktime( 0, 0, 0, $month , $day-1, $year);
$tomorrow   = mktime( 0, 0, 0, $month , $day+1, $year);
// ----
echo '<pre>Current Day: '.date('Y-m-d', $current).'</pre>';
echo '<pre>Day Before: '.date('Y-m-d', $yesterday).'</pre>';
echo '<pre>Day After: '.date('Y-m-d', $tomorrow).'</pre>';

如果您正在寻找 7 月的最后一天:

$july = mktime( 0, 0, 0, 8, 1-1, 2012);
// Last Day of July: 2012-07-31
echo '<pre>Last Day of July: '.date('Y-m-d', $july).'</pre>';

使用 mktime,只需输入 8 月的第一天并减去一天。

于 2012-08-03T13:27:42.957 回答