Получить начало и конец метки времени unix для данного месяца и года в php

Я хочу найти отметку времени на первый день месяца (скажем, 1 сентября 2010 года и 0:00) и последний день месяца (скажем, 31 сентября 23:59).

3 ответов


Если у вас есть эти даты в виде строк, вы можете просто использовать strtotime (), Если у вас есть только частичная информация вы можете использовать mktime ().

однако сентябрь имеет только 30 дней;)

пример:

$month = 9;
$year  = 2010;

$first = mktime(0,0,0,$month,1,$year);
echo date('r', $first);

$last = mktime(23,59,00,$month+1,0,$year);
echo date('r', $last);

Если вы используете PHP 5.3 (не пробуйте это с 5.2, парсер даты работает по-другому), вы можете говорить:

<?php

$date = "2010-05-10 00:00:00";

$x = new DateTime($date);

$x->modify("last day of this month");
$x->modify("last second");

echo $x->format("Y-m-d H:i:s");
// 2010-05-30 23:59:59
$timestamp = $x->getTimestamp();

может это можно сделать проще, но вы получите идею:

<?php

$start = mktime(0, 0, 1, $month, 1, $year);
$end   = mktime(23, 59, 00, $month, date('t', $month), $year);

?>