在php中获取上个月的date
我想得到上个月的date。 我写了这个:
$prevmonth = date('M Y');
这给了我当前的月份/年份。 我不知道是否应该使用strtotime
, mktime
。 什么时间戳? 我需要添加一些事后重置,以便在我的网站上的所有时间戳的date没有设置为上个月? 我正在尝试RTM,但我很难弄清楚这一点。
得到上个月的date很简单
echo date("Ynj", strtotime("first day of previous month")); echo date("Ynj", strtotime("last day of previous month"));
在11月3日返回
2014-10-1 2014-10-31
echo strtotime("-1 month");
那将精确地输出上个月的时间戳。 之后你不需要重设任何东西。 如果之后需要使用英文格式,则可以使用date()格式化时间戳,即:
echo date("Ymd H:i:s",strtotime("-1 month"));
$prevmonth = date('M Y', strtotime("last month"));
如果你想得到上个月,那么你可以使用如下
$prevmonth = date('M Y', strtotime('-1 months'));
如果你想得到上个月的同一天,那么你可以像下面一样使用..
$prevmonth = date('MY d', strtotime('-1 months'));
如果你想获得前一个月的最后一个date,那么你可以使用如下…
$prevmonth = date('MY t', strtotime('-1 months'));
如果你想获得上个月的第一个date,那么你可以使用像下面的…
$prevmonth = date('MY 1', strtotime('-1 months'));
当前几个月比现在短时发现这个错误。
echo date("Ymd H:i:s",strtotime("-1 month"));
尝试三月三十号,你会得到2012-03-01,而不是2012-02 …
制定更好的解决scheme…
不正确的答案是:
$lastMonth = date('M Y', strtotime("-1 month")); $lastDate = date('Y-m', strtotime('last month'));
原因是如果当前月份是30天以上,但上个月是29天,并且较less月份月份将与当前月份相同。
例如
If $currentMonth = '30/03/2016'; echo $lastMonth = date('m-Y', strtotime("-1 month")); => 03-2016 echo $lastDate = date('Y-m', strtotime('last month')); => 03-2016 echo $lastMonth = date('m-Y', strtotime("-1 month")); => 03-2016
正确的答案是:
echo date("mY", strtotime("first day of previous month")); => 02-2016 echo sprintf("%02d",date("m")-1) . date("-Y"); => 02-2016 echo date("mY",mktime(0,0,0,date("m")-1,1,date("Y"))); => 02-2016
public function getLastMonth() { $now = new DateTime(); $lastMonth = $now->sub(new DateInterval('P1M')); return $lastMonth->format('Ym'); }
回声date('Y',strtotime(“ – 1 year”)); //去年
echo date('d',strtotime(“ – 1 day”)); //最后一天
echo date('m',strtotime(“ – 1 month”)); //上个月
你可以使用strtotime
,这在这种情况下是很好的:
$timestamp = strtotime('-1 month'); var_dump(date('Y-m', $timestamp));
会得到你:
string '2009-11' (length=7)
$time = mktime(0, 0, 0, date("m"),date("d")-date("t"), date("Y")); $lastMonth = date("dmY", $time);
要么
$lastMonth = date("mY", mktime() - 31*3600*24);
作品于30.03.2012
哦,我知道了,请忽略,除非你有同样的问题,我在这种情况下:
$prevmonth = date("MY",mktime(0,0,0,date("m")-1,1,date("Y")));
$lastMonth = date('M Y', strtotime("-1 month")); var_dump($lastMonth); $lastMonth = date('M Y', mktime(0, 0, 0, date('m') - 1, 1, date('Y'))); var_dump($lastMonth);
这个对我有用:
今天是:31/03/2012
echo date("Ymd", strtotime(date('m', mktime() - 31*3600*24).'/01/'.date('Y').' 00:00:00')); // 2012-02-01 echo date("Ymd", mktime() - 31*3600*24); // 2012-02-29
使用这个简短的代码来获得任何给定date的上个月:
$tgl = '25 january 2012'; $prevmonth = date("MY",mktime(0,0,0,date("m", strtotime($tgl))-1,1,date("Y", strtotime($tgl)))); echo $prevmonth;
结果是2011年12月。与上个月的date较短的一个月工作。
如果你想获得上个月的第一个date,那么你可以使用如下… $prevmonth = date('MY 1', strtotime('-1 months'));
什么? 第一个date将永远是1:D
这个问题是相当古老的,但无论如何。 如果你只想得到前一个月,那一天不重要,你可以使用这个:
$date = '2014-01-03'; $dateTime = new DateTime($date); $lastMonth = $dateTime->modify('-' . $dateTime->format('d') . ' days')->format('F Y'); echo $lastMonth; // 'December 2013'