在PHP中获取给定月份的第一天?

时间:2014-06-23 19:24:43

标签: php date

我一直试图让下面的代码工作,虽然它与6月一起使用但是它与7月没有合作。

对于$ first_day_of_month,下面的结果值为3,而星期二应为2。

$date = strtotime('20140702'); // July 02, 2014
$month = date('m',$date);
$year = date('Y',$date);
$days_in_month = date('t',$date);
$first_day_of_month = date('w', strtotime($year . $month . 01)); // sunday = 0, saturday = 6

3 个答案:

答案 0 :(得分:5)

strtotime功能支持relative time formats。你可以这样做:

$date = strtotime('20140702');
$first_date = strtotime('first day of this month', $date);
$first_day_of_month = date('w', $first_date);

strtotime的第二个参数提供相对格式相对的时间。您可以使用它来轻松计算相对于特定点的日期,如上所示。

答案 1 :(得分:2)

您必须将01转换为字符串,否则php将计算2014071而不是20140701的时间

strtotime($year . $month . '01')

答案 2 :(得分:2)

你应该看看mktime()

在您的情况下,您最好的方法是:

$date = strtotime('20140702'); // July 02, 2014
$month = date('m',$date);
$year = date('Y',$date);
$days_in_month = date('t',$date);


$first_day_of_month = date('w', mktime(0,0,0,$month,1,$year)); // sunday = 0, saturday = 6

作为奖励,您还可以获得该月的最后一天

$last_date_of_month = mktime(0,0,0,$month+1,0,$year);