如何在昨天之前获得月末

时间:2014-02-24 04:18:50

标签: php

我需要在昨天之前获得昨天的日期和6月底的日期。 我所做的是:

$yesterday_day = date("d") - 1;
$yesterday_month = date("m");
$yesterday_year = date("Y");
$yesterday_date = date("m/d/Y", mktime(0,0,0,$yesterday_month,$yesterday_day,$yesterday_year));

$day_before_1 = date("d") - 1;
$month_before_1 = date("m")-1;
$year_before_1 = date("Y");
$date_before_1 = date("m/t/Y", mktime(0,0,0,$month_before_1,$day_before_1,$year_before_1));

当我echo对昨天日期的罚款总是正确的..但是在我试图将我的电脑日期改为2014年3月31日(或3月30日)之前的月末发生了奇怪的事情。月底之前应该是2014年2月28日但是它的展示2014年3月31日..如果我从3月29日之前和之前选择它是正常的..

我怀疑是因为2月只有28天,但不知道如何解决这个问题。

2 个答案:

答案 0 :(得分:1)

使用strtotime,卢克 它将为您提供下次使用所需的时间戳作为第二个参数到日期函数。

答案 1 :(得分:0)

最后我解决了这个问题。这个想法很简单,仍然使用srttotime但我不使用-x month ..相反,我使用-x day ..后面的代码将显示它:

$yesterday_day  = date("d")-1;
$yesterday_month = date("m");
$yesterday_year  = date("Y");
//getting yesterday date
$date_query = date("m/d/Y", mktime (0,0,0, $yesterday_month, $yesterday_day, $yesterday_year));

$day_before = date("d");
if($day_before==1){
 $day_before =substr($date_query,3,2)+1;
}

$date_query_before_1 = date("m/d/Y",strtotime("-$day_before day"));

//to get number of day in that month using substr
$day_before += substr($date_query_before_1,3,2);
$date_query_before_2 = date("m/d/Y",strtotime("-$day_before day"));


$day_before += substr($date_query_before_2,3,2); 
$date_query_before_3 = date("m/d/Y",strtotime("-$day_before day"));


$day_before += substr($date_query_before_3,3,2);
$date_query_before_4 = date("m/d/Y",strtotime("-$day_before day"));


$day_before += substr($date_query_before_4,3,2);
$date_query_before_5 = date("m/d/Y",strtotime("-$day_before day"));


$day_before += substr($date_query_before_5,3,2);
$date_query_before_6 = date("m/d/Y",strtotime("-$day_before day"));