【问题标题】:Start Day and End Day Of Current Month & Start Day & End Day of Current Year [duplicate]当前月份的开始日期和结束日期以及当年的开始日期和结束日期[重复]
【发布时间】:2014-03-02 13:36:50
【问题描述】:

我正在尝试获取当前月份的开始日期和当前的结束日期。

每个月都需要改变,例如这个月我需要:

$startMonth = 2014-02-01
$endMonth = 2014-02-28

我知道 mktime PHP 页面,但我无法理解它:http://uk3.php.net/mktime

我还需要当年的开始日和结束日:

$startYear = 2014-01-01
$endYear = 2014-12-31

我需要上述格式的,我可以使用前几个月获取:

$previousmonthStart = date("Y-m-d", mktime(0, 0, 0, date("m"), 0, date("Y")));
$previousmonthEnd = date("Y-m-d", mktime(0, 0, 0, date("m")-1, 1, date("Y")));

只需要知道什么改变了什么。

【问题讨论】:

  • 不是,我想用mktime函数。
  • 为什么?有更好的方法可以做到这一点。

标签: php


【解决方案1】:

既然你想用mktime()...

我认为今年的第一天和当年的最后一天总是(不需要mktime()):

date('Y') . '01-01'; 
date('Y') . '12-31';

对于当月的第一天和最后一个月,mktime() 试试这个:

$m = (integer) date('n');
$start = date('Y-m-d',mktime(1,1,1,$m,1,date('Y')));
$end   = date('Y-m-d',mktime(1,1,1,++$m,0,date('Y')));

//Considering today is 2014-02-05
echo $start; //2014-02-01
echo $end;   //2014-02-28

mktime 需要时、分、秒、月、日、年

$m 告诉 mktime 使用当前月份作为月份值,下一个 1 告诉它使用该月的第一天。

++$m 告诉它使用下个月,0 告诉你下个月第一天的前一天,即当月的最后一天。

示例:http://codepad.org/1G7UJNni

【讨论】: