我试图从约会中减去1个月。
$today = date('m-Y');
这给出了:08-2016
如何减去一个月才能获得07-2016
?
答案 0 :(得分:35)
<?php
echo $newdate = date("m-Y", strtotime("-1 months"));
输出
07-2016
答案 1 :(得分:8)
警告!如果在一个月末打电话,上述例子将无法运作。
<?php
$now = mktime(0, 0, 0, 10, 31, 2017);
echo date("m-Y", $now)."\n";
echo date("m-Y", strtotime("-1 months", $now))."\n";
将输出:
10-2017
10-2017
以下示例将产生相同的结果:
$date = new DateTime('2017-10-31 00:00:00');
echo $date->format('m-Y')."\n";
$date->modify('-1 month');
echo $date->format('m-Y')."\n";
如何解决问题的方法可以在另一个帖子中找到:PHP DateTime::modify adding and subtracting months
答案 2 :(得分:3)
试试这个,
$today = date('m-Y');
$newdate = date('m-Y', strtotime('-1 months', strtotime($today)));
echo $newdate;
答案 3 :(得分:3)
根据您的PHP版本,您可以使用DateTime对象(如果我没记错的话,在PHP 5.2中引入):
<?php
$today = new DateTime(); // This will create a DateTime object with the current date
$today->modify('-1 month');
您可以将另一个日期传递给构造函数,它不必是当前日期。更多信息:http://php.net/manual/en/datetime.modify.php
答案 4 :(得分:0)
if(date("d") > 28){
$date = date("Y-m", strtotime("-".$loop." months -2 Day"));
} else {
$date = date("Y-m", strtotime("-".$loop." months"));
}
答案 5 :(得分:0)
$lastMonth = date('Y-m', strtotime('-1 MONTH'));
答案 6 :(得分:0)
首先将日期格式从“ y”更改为“ y-m”
$date = $_POST('date'); // Post month
or
$date = date('m-Y'); // currrent month
$date_txt = date_create_from_format('m-Y', $date);
$change_format = date_format($date_txt, 'Y-m');
此代码减去给定日期的1个月
$final_date = new DateTime($change_format);
$final_date->modify('-1 month');
$output = $final_date->format('m-Y');
答案 7 :(得分:0)
尝试一下
$effectiveDate = date('2018-01'); <br>
echo 'Date'.$effectiveDate;<br>
$effectiveDate = date('m-y', strtotime($effectiveDate.'+-1 months'));<br>
echo 'Date'.$effectiveDate;
答案 8 :(得分:0)
$currentMonth = date('m', time());
$currentDay = date('d',time());
$currentYear = date('Y',time());
$lastMonth = $currentMonth -1;
$one_month_ago=mkdate(0,0,0,$one_month_ago,$currentDay,$currentYear);
可以更优雅地重写它,但是对我有用
答案 9 :(得分:0)
我用它来防止出现“每月的最后几天”错误。我只是使用第二个strtotime()将日期设置为每月的第一天:
<?php
echo $newdate = date("m-Y", strtotime("-1 months", strtotime(date("Y-m")."-01")));