2010-04-21 12 views

Respuesta

163

La forma más sencilla es utilizar date, lo que le permite mezclar los valores codificados de forma rígida con los extraídos de una marca de tiempo. Si no proporciona una marca de tiempo, asume la fecha y hora actuales.

// 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() Busca la cadena que se le da, como 'm-t-Y', para los símbolos específicos, y los sustituye por los valores de su marca de tiempo. Entonces podemos usar esos símbolos para extraer los valores y el formato que queremos de la marca de tiempo. En los ejemplos anteriores:

  • Y le da el año de 4 dígitos de la marca de tiempo ('2010')
  • m le da el mes numérico de la marca de tiempo, con un cero ('04')
  • t le da el número de días del mes de la fecha y hora ('30')

usted puede ser creativo con esto. Por ejemplo, para obtener el primero y el último segundo de un mes:

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

Ver http://php.net/manual/en/function.date.php a otros símbolos y más detalles.

+1

Solo agregando información aquí, tuve problemas para convertir datan de marca de tiempo Unix con este formato, se fijó mediante el uso de formato 'dmY' en lugar de 'MDY' .. también el último segundo será '23: 59: 59' en lugar de '12: 59: 59' .. Gracias –

9

esto le dará el último día del mes:

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

y el primer día:

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

Puede use la función de fecha para encontrar cuántos días en un mes hay.

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

Espero que ayude.

EDITAR: Después de leer la respuesta de Luis, se me ocurrió que podría quererla en el formato correcto (AA-mm-dd). Puede ser obvio, pero no está de más mencionar:

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

simple uno

  • Y - Una representación numérica completa de un año, 4 dígitos
  • m - Representación numérica de un mes, con ceros a la izquierda
  • t - número de días en el mes dado

Referencia - http://www.php.net/manual/en/function.date.php

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

Para obtener la primera y la última fecha 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); 
3

Para específico meses y años fecha de uso() como lenguaje natural de la siguiente manera

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

pero para el mes actual

$first_date = date('d-m-Y',strtotime('first day of this month')); 
$last_date = date('d-m-Y',strtotime('last day of this month')); 
0
$month=01; 
$year=2015; 
$num = cal_days_in_month(CAL_GREGORIAN, $month, $year); 
echo $num; 

pantalla 31 último día de fecha

3

Si usted quiere encontrar el primer día y el último día de la variable de fecha especificado, entonces usted puede hacer esto, como a continuación:

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

para la fecha actual acaba de simple uso de este

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

Live Demo

+1

mucho por tu respuesta. Acabas de resolver el problema exacto que estaba teniendo, "seleccionando la primera fecha del mes dado". – Seeker

+1

Es un placer :) – Faisal

+0

Puede reemplazar la fecha ("Y-m-d", strtotime (fecha $)) con fecha $, ya que son los mismos pero se escribe menos código. – nicolascolman

1

En formato 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); 

Para el próximo mes cambie $ curMonth a $ curMonth = date ('F', strtotime ("+ 1 months"));

Cuestiones relacionadas