PHPを使用して月の最初と最後の日付を見つけるにはどうすればよいですか?


回答:


205

最も簡単な方法はdate、を使用することです。これにより、ハードコードされた値をタイムスタンプから抽出された値と混合できます。タイムスタンプを指定しない場合は、現在の日付と時刻が想定されます。

// Current timestamp is assumed, so these find first and last day of THIS month
$first_day_this_month = date('m-01-Y'); // hard-coded '01' for first day
$last_day_this_month  = date('m-t-Y');

// With timestamp, this gets last day of April 2010
$last_day_april_2010 = date('m-t-Y', strtotime('April 21, 2010'));

date()のように'm-t-Y'、指定された文字列で特定の記号を検索し、それらをタイムスタンプの値に置き換えます。したがって、これらの記号を使用して、タイムスタンプから必要な値とフォーマットを抽出できます。上記の例では:

  • Y タイムスタンプから4桁の年を示します( '2010')
  • m タイムスタンプからの数値の月を、先行ゼロ( '04')で示します
  • t タイムスタンプの月の日数を示します( '30')

あなたはこれで創造的になることができます。たとえば、月の最初と最後の秒を取得するには、次のようにします。

$timestamp    = strtotime('February 2012');
$first_second = date('m-01-Y 00:00:00', $timestamp);
$last_second  = date('m-t-Y 12:59:59', $timestamp); // A leap year!

参照http://php.net/manual/en/function.date.phpを他のシンボルと詳細。


3
ここに情報を追加するだけで、この形式で日付をUNIXタイムスタンプに戻す際に問題が発生しました。「mdY」ではなく「dmY」形式を使用して修正されました。また、最後の1秒は「12」ではなく「23:59:59」になります。 :59:59 '..
Syed Qarib 2016


18

日付関数を使用して、1か月の日数を見つけることができます。

// Get the timestamp for the date/month in question.
$ts = strtotime('April 2010');

echo date('t', $ts); 
// Result: 30, therefore, April 30, 2010 is the last day of that month.

お役に立てば幸いです。

編集:ルイスの答えを読んだ後、あなたはそれを正しいフォーマット(YY-mm-dd)で欲しいかもしれないと私は思いました。当たり前のことかもしれませんが、言及しても問題ありません。

// After the above code
echo date('Y-m-t', $ts); 

11

これにより、その月の最後の日が表示されます。

function lastday($month = '', $year = '') {
   if (empty($month)) {
      $month = date('m');
   }
   if (empty($year)) {
      $year = date('Y');
   }
   $result = strtotime("{$year}-{$month}-01");
   $result = strtotime('-1 second', strtotime('+1 month', $result));
   return date('Y-m-d', $result);
}

そして初日:

function firstDay($month = '', $year = '')
{
    if (empty($month)) {
      $month = date('m');
   }
   if (empty($year)) {
      $year = date('Y');
   }
   $result = strtotime("{$year}-{$month}-01");
   return date('Y-m-d', $result);
} 

5

特定のについては、次のように自然言語としてdate()を使用します

$first_date = date('d-m-Y',strtotime('first day of april 2010'));
$last_date = date('d-m-Y',strtotime('last day of april 2010'));
// Isn't it simple way?

しかし今月は

$first_date = date('d-m-Y',strtotime('first day of this month'));
$last_date = date('d-m-Y',strtotime('last day of this month'));

5

指定された日付変数から最初の日と最後の日を検索する場合は、次のように実行できます。

$date    =    '2012-02-12';//your given date

$first_date_find = strtotime(date("Y-m-d", strtotime($date)) . ", first day of this month");
echo $first_date = date("Y-m-d",$first_date_find);

$last_date_find = strtotime(date("Y-m-d", strtotime($date)) . ", last day of this month");
echo $last_date = date("Y-m-d",$last_date_find);

現在の日付については、これを使用するだけです

$first_date = date('Y-m-d',strtotime('first day of this month'));
$last_date = date('Y-m-d',strtotime('last day of this month'));

date( "Ymd"、strtotime($ date))は同じですが、コードの記述が少ないため、$ dateに置き換えることができます。
nicolascolman 2017

2

の最初と最後の日付を取得するにはLast Month;

$dateBegin = strtotime("first day of last month");  
$dateEnd = strtotime("last day of last month");

echo date("D-F-Y", $dateBegin);  
echo "<br>";        
echo date("D-F-Y", $dateEnd);

2

シンプルなフォーマットで

   $curMonth = date('F');
   $curYear  = date('Y');
   $timestamp    = strtotime($curMonth.' '.$curYear);
   $first_second = date('Y-m-01 00:00:00', $timestamp);
   $last_second  = date('Y-m-t 12:59:59', $timestamp); 

来月は $ curMonth$ curMonth = date( 'F'、strtotime( "+ 1months"));に変更します。


0
$month=01;
$year=2015;
$num = cal_days_in_month(CAL_GREGORIAN, $month, $year);
echo $num;

日付の最終日31を表示

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.