web-dev-qa-db-fra.com

Comment puis-je trouver la première et la dernière date d'un mois en utilisant PHP?

Comment puis-je trouver la première et la dernière date d'un mois en utilisant PHP? Par exemple, nous sommes le 21 avril 2010; Je veux trouver le 1er avril 2010 et le 30 avril 2010.

70
Karthik

Le moyen le plus simple consiste à utiliser date, qui vous permet de mélanger des valeurs codées en dur avec celles extraites d'un horodatage. Si vous ne donnez pas d'horodatage, il suppose la date et l'heure actuelles.

// 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() recherche dans la chaîne donnée, telle que 'm-t-Y', des symboles spécifiques et les remplace par les valeurs de son horodatage. Nous pouvons donc utiliser ces symboles pour extraire les valeurs et le formatage souhaités à partir de l'horodatage. Dans les exemples ci-dessus:

  • Y vous donne l'année à 4 chiffres à partir de l'horodatage ('2010')
  • m vous donne le mois numérique à partir de l'horodatage, avec un zéro non significatif ('04')
  • t vous donne le nombre de jours dans le mois de l'horodatage ('30')

Vous pouvez être créatif avec cela. Par exemple, pour obtenir la première et la dernière seconde d'un mois:

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

Voir http://php.net/manual/en/function.date.php pour d'autres symboles et plus de détails.

184
Nathan Long

Un simple

  • Y - Une représentation numérique complète d'une année, 4 chiffres 
  • m - Représentation numérique d'un mois avec des zéros non significatifs 
  • t - Nombre de jours dans le mois donné

Référence - http://www.php.net/manual/fr/function.date.php

<?php
    echo 'First Date    = ' . date('Y-m-01') . '<br />';
    echo 'Last Date     = ' . date('Y-m-t')  . '<br />';
?>
23
Siva Kranthi Kumar

Vous pouvez utiliser la fonction de date pour déterminer le nombre de jours dans un mois.

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

J'espère que cela pourra aider.

EDIT: Après avoir lu la réponse de Luis, je me suis dit que vous voudriez peut-être qu'elle soit dans le bon format (AA-mm-jj). Cela peut paraître évident, mais cela ne fait pas de mal de mentionner:

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

Cela vous donnera le dernier jour du mois:

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

Et le premier jour:

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

Pour mois et année spécifiques, utilisez date () comme langage naturel comme suit

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

mais pour le mois en cours

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

Si vous voulez trouver le premier jour et le dernier jour de la variable de date spécifiée, procédez comme suit:

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

Pour la date actuelle, utilisez simplement cette

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

Démo en direct

3
Faisal

En format simple

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

Pour le mois prochain, changez $ curMonth en $ curMonth = date ('F', strtotime ("+ 1 mois"));  

2
Yasar Arafath

Pour obtenir la première et la dernière date de 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
karuppub
$month=01;
$year=2015;
$num = cal_days_in_month(CAL_GREGORIAN, $month, $year);
echo $num;

afficher 31 dernier jour de la date

0
SunUser