PHP kullanarak bir ayın ilk ve son tarihini nasıl bulabilirim?


Yanıtlar:


207

En kolay yol, datesabit kodlanmış değerleri bir zaman damgasından çıkarılanlarla karıştırmanıza izin veren kullanımıdır . Bir zaman damgası vermezseniz, geçerli tarih ve saati varsayar.

// 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'Belirli semboller için olduğu gibi verilen dizeyi arar ve bunları zaman damgasındaki değerlerle değiştirir. Bu sembolleri, zaman damgasından istediğimiz değerleri ve biçimlendirmeyi çıkarmak için kullanabiliriz. Yukarıdaki örneklerde:

  • Y size zaman damgasından ('2010') itibaren 4 basamaklı yılı verir
  • m başında sıfır ('04') olacak şekilde zaman damgasından itibaren sayısal ayı verir
  • t size zaman damgasının bulunduğu aydaki gün sayısını verir ('30')

Bununla yaratıcı olabilirsiniz. Örneğin, bir ayın ilk ve son saniyesini almak için:

$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!

Diğer semboller ve daha fazla ayrıntı için http://php.net/manual/en/function.date.php adresine bakın .


3
Buraya sadece bilgi ekleyerek, tarihi bu formatla Unix zaman damgasına dönüştürmede sorun yaşadım, 'mdY' yerine 'dmY' formatı kullanılarak düzeltildi .. ayrıca son saniye '12 yerine '23: 59: 59 'olacak : 59: 59 '..
Syed Qarib


19

Bir ayda kaç gün olduğunu bulmak için tarih işlevini kullanabilirsiniz.

// 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.

Umarım yardımcı olur.

DÜZENLEME: Luis'in cevabını okuduktan sonra, doğru formatta isteyebilirsiniz (YY-aa-gg) bana geldi. Açık olabilir, ancak şunu belirtmekten zarar gelmez:

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

12

Bu size ayın son gününü verecektir:

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);
}

Ve ilk Gün:

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);
} 

6

Belirli ay ve yıl için aşağıdaki gibi doğal dil olarak date () kullanın

$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?

ancak Geçerli ay için

$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

Belirtilen tarih değişkeninden ilk günü ve son günü bulmak isterseniz aşağıdaki gibi yapabilirsiniz:

$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);

Geçerli tarih için bunu kullanın

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

Tarih ("Ymd", strtotime ($ tarih)) yerine $ date koyabilirsiniz çünkü bunlar aynıdır ancak daha az kod yazarsınız.
nicolascolman

2

İlk ve son tarihini almak için 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

Basit formatta

   $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); 

Önümüzdeki ay değişim için $ curMonth için $ curMonth = date ( 'F', strtotime ( "+ 1 ay"));


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

tarihin son 31 gününü göster

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.