2012-03-02 52 views
5

Есть ли лучший способ вернуть дату в первый день определенного месяца/года, а не следующее?Получение первого дня месяца определенного месяца/года

$month = date('m'); 
$year = date('Y'); 
$from = date('Y-m-d', mktime(0, 0, 0, $month, 1, $year)); 
+0

Что вы подразумеваете под улучшением? То, что у вас есть, кажется прекрасным. – j08691

ответ

-1

Это похоже на правильный путь, чтобы сделать это для меня. Возможно, вы захотите сделать его функцией.

10

Это не совсем вычислительно элегантный, но мне это нравится, потому что это так читаем:

strtotime("first day of this month"); 
+0

Стоит отметить, что такие изменения, как «первый день следующего месяца» и «первый день этого месяца +2 месяца», также работают. – drewish

+2

Также стоит отметить, что в отличие от образца в вопросе, который имеет полночь как время, эта версия использует текущие часы, минуты и секунды. – drewish

+1

Мне нравится использовать '$ date = new DateTime ('первый день этого месяца'); $ date-> setTime (0, 0, 0); ' – LeonardChallis

8

Почему так сложно?

date("Y-m-01") 

Это будет работать нормально;)

(Не волнуйтесь, я ударил себя трудно тратить час баловаться с strtotime прежде чем понял, что я мог сделать это)

2

date("Y-m-01") будет работать! в совершенстве; Я использовал ту же технику, чтобы найти запись с первого дня месяца до текущего дня. Посмотрите на следующие строки кода:

if(!isset($FromDate)) 
      $FromDate=date('Y-m-01'); //date with current month's first day 

if(!isset($ToDate)) 
     $ToDate=date('Y-m-d'); /////current date 

Я надеюсь, что это будет работать в соответствии с требованиями.

Смежные вопросы