如何使用PHP查找一个月中的第一个和最后一个日期?


Answers:


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/zh/function.date.php


3
只是在这里添加信息,我在使用这种格式将日期转换回unix时间戳时遇到问题,已通过使用'dmY'格式而不是'mdY'来解决。.最后一秒将是'23:59:59'而不是'12 :59:59'..
Syed Qarib '16


18

您可以使用日期功能来查找一个月中有多少天。

// 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变量中查找第一天和最后一天,则可以执行以下操作:

$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替换date(“ Ymd”,strtotime($ date)),因为它们相同,但是您编写的代码更少。
nicolascolman

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 =日期( 'F'的strtotime( “+1个月”));


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

显示日期的最后31天

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.