2010-04-21 6 views

Antwort

163

Der einfachste Weg ist date, zu verwenden, die Sie hartcodierte Werte mit denen aus einem Zeitstempel extrahiert mischen lässt. Wenn Sie keinen Zeitstempel angeben, wird das aktuelle Datum und die Uhrzeit angenommen.

// 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() sucht die Zeichenfolge es gegeben, wie 'm-t-Y', für bestimmte Symbole und ersetzt sie mit den Werten aus seinem Zeitstempel. Daher können wir diese Symbole verwenden, um die gewünschten Werte und Formatierungen aus dem Zeitstempel zu extrahieren. In den obigen Beispielen:

  • Y gibt Ihnen das 4-stellige Jahr aus dem Zeitstempel (‚2010‘)
  • m gibt Ihnen den numerischen Monat aus dem Zeitstempel, mit einer führenden Null (‚04‘)
  • t gibt Ihnen die Anzahl der Tage im Monat Zeitstempel (‚30‘)

Sie können mit diesem kreativ sein. Um zum Beispiel die erste und die letzte Sekunde von einem Monat zu bekommen:

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

Siehe http://php.net/manual/en/function.date.php für andere Symbole und weitere Details.

+1

Ich fügte nur Info hier hinzu, ich hatte Probleme zu konvertieren zurück zu Unix Timestamp mit diesem Format, wurde mit 'dmY' Format statt 'mdY' .. behoben. Auch die letzte Sekunde wird '23: 59: 59 'statt '12: 59: 59' .. –

9

Dadurch werden Sie den letzten Tag des Monats geben:

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

und dem ersten Tag:

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

Sie können Verwenden Sie die Datumsfunktion, um zu ermitteln, wie viele Tage in einem Monat es sind.

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

Hoffe, dass hilft.

EDIT: Nachdem ich Luis Antwort gelesen hatte, fiel mir auf, dass Sie es im richtigen Format (YY-mm-dd) wollen. Es mag offensichtlich sein, aber verletzt nicht zu erwähnen:

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

Einfach ein

  • Y - Eine vollständige numerische Darstellung eines Jahres, 4-stellig
  • m - Numerische Darstellung eines Monats, mit führenden Nullen
  • t - Anzahl der Tage im jeweiligen Monat

Referenz - 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

Um das erste und letzte Datum von Last Month zu erhalten;

$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

Für spezifischen Monat und Jahr Verwendung date() als natürliche Sprache als

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

aber für Aktuellen Monat

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

Anzeige 31 letzter Tag des Datums

3

Wenn Sie den ersten Tag und letzten Tag von dem angegebenen Datum Variable zu finden, dann können Sie dies wie unten tun:

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

Für das aktuelle Datum nur einfache Verwendung dieses

$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

Vielen Dank viel für Ihre Antwort. Sie haben gerade das genaue Problem gelöst, das ich hatte, "das erste Datum des angegebenen Monats auswählend." – Seeker

+1

Es ist mir ein Vergnügen :) – Faisal

+0

Sie können Datum ("Y-m-d", strtotime ($ date)) durch $ date ersetzen, weil sie gleich sind, aber Sie weniger Code schreiben. – nicolascolman

1

In einfachen Format

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

Für nächsten Monat Änderung $ curMonth zu $ curMonth = Datum ('F', strtotime ("+ 1 Monate"));

Verwandte Themen