Jak znaleźć pierwszą i ostatnią datę w miesiącu używając PHP?
84
Jak znaleźć pierwszą i ostatnią datę w miesiącu używając PHP? Na przykład dzisiaj jest 21 kwietnia 2010 r .; Chcę znaleźć 1 kwietnia 2010 i 30 kwietnia 2010.
Najłatwiejszym sposobem jest użycie date, które pozwala mieszać wartości zakodowane na stałe z wartościami wyodrębnionymi z sygnatury czasowej. Jeśli nie podasz sygnatury czasowej, przyjmie on aktualną datę i godzinę.
// 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()przeszukuje podany ciąg znaków, na przykład 'm-t-Y', pod kątem określonych symboli i zastępuje je wartościami z jego znacznika czasu. Możemy więc użyć tych symboli, aby wyodrębnić wartości i formatowanie, które chcemy, ze znacznika czasu. W powyższych przykładach:
Y podaje 4-cyfrowy rok od sygnatury czasowej („2010”)
m podaje numer miesiąca liczony od sygnatury czasowej z początkowym zerem („04”)
t podaje liczbę dni w miesiącu znacznika czasu („30”)
Dzięki temu możesz być kreatywny. Na przykład, aby uzyskać pierwszą i ostatnią sekundę miesiąca:
Po prostu dodając tutaj informacje, miałem problem z konwersją daty z powrotem na znacznik czasu unixa w tym formacie, został naprawiony przy użyciu formatu 'dmY' zamiast 'mdY' .. również ostatnia sekunda będzie miała '23: 59: 59 'zamiast '12 : 59: 59 '..
Syed Qarib
27
Prosty
Y - pełna numeryczna reprezentacja roku, 4 cyfry
m - numeryczna reprezentacja miesiąca z zerami na początku
Możesz użyć funkcji daty, aby sprawdzić, ile dni w miesiącu jest.
// 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.
Mam nadzieję, że to pomoże.
EDYCJA: Po przeczytaniu odpowiedzi Luisa przyszło mi do głowy, że możesz chcieć ją w odpowiednim formacie (RR-mm-dd). Może to być oczywiste, ale nie zaszkodzi wspomnieć:
Dla określonego miesiąca i roku użyj daty () jako języka naturalnego, jak poniżej
$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?
ale dla bieżącego miesiąca
$first_date = date('d-m-Y',strtotime('first day of this month'));
$last_date = date('d-m-Y',strtotime('last day of this month'));
Jeśli chcesz znaleźć pierwszy i ostatni dzień z określonej zmiennej daty, możesz to zrobić w następujący sposób:
$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);
Na obecną datę po prostu użyj tego
$first_date = date('Y-m-d',strtotime('first day of this month'));
$last_date = date('Y-m-d',strtotime('last day of this month'));
Możesz zamienić date ("Ymd", strtotime ($ date)) na $ date, ponieważ są takie same, ale piszesz mniej kodu.
nicolascolman
2
Aby uzyskać pierwszą i ostatnią datę 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);
Odpowiedzi:
Najłatwiejszym sposobem jest użycie
date
, które pozwala mieszać wartości zakodowane na stałe z wartościami wyodrębnionymi z sygnatury czasowej. Jeśli nie podasz sygnatury czasowej, przyjmie on aktualną datę i godzinę.// 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()
przeszukuje podany ciąg znaków, na przykład'm-t-Y'
, pod kątem określonych symboli i zastępuje je wartościami z jego znacznika czasu. Możemy więc użyć tych symboli, aby wyodrębnić wartości i formatowanie, które chcemy, ze znacznika czasu. W powyższych przykładach:Y
podaje 4-cyfrowy rok od sygnatury czasowej („2010”)m
podaje numer miesiąca liczony od sygnatury czasowej z początkowym zerem („04”)t
podaje liczbę dni w miesiącu znacznika czasu („30”)Dzięki temu możesz być kreatywny. Na przykład, aby uzyskać pierwszą i ostatnią sekundę miesiąca:
$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!
Zobacz http://php.net/manual/en/function.date.php, aby uzyskać inne symbole i więcej szczegółów.
źródło
Prosty
Źródła - 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 />'; ?>
źródło
Możesz użyć funkcji daty, aby sprawdzić, ile dni w miesiącu jest.
// 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.
Mam nadzieję, że to pomoże.
EDYCJA: Po przeczytaniu odpowiedzi Luisa przyszło mi do głowy, że możesz chcieć ją w odpowiednim formacie (RR-mm-dd). Może to być oczywiste, ale nie zaszkodzi wspomnieć:
// After the above code echo date('Y-m-t', $ts);
źródło
W ten sposób otrzymasz ostatni dzień miesiąca:
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); }
I pierwszy dzień:
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); }
źródło
Dla określonego miesiąca i roku użyj daty () jako języka naturalnego, jak poniżej
$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?
ale dla bieżącego miesiąca
$first_date = date('d-m-Y',strtotime('first day of this month')); $last_date = date('d-m-Y',strtotime('last day of this month'));
źródło
Jeśli chcesz znaleźć pierwszy i ostatni dzień z określonej zmiennej daty, możesz to zrobić w następujący sposób:
$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);
Na obecną datę po prostu użyj tego
$first_date = date('Y-m-d',strtotime('first day of this month')); $last_date = date('Y-m-d',strtotime('last day of this month'));
źródło
Aby uzyskać pierwszą i ostatnią datę
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);
źródło
W prostym formacie
$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);
Na następny miesiąc zmień $ curMonth na $ curMonth = date ('F', strtotime ("+ 1 miesiąc"));
źródło
$month=01; $year=2015; $num = cal_days_in_month(CAL_GREGORIAN, $month, $year); echo $num;
wyświetlanie 31 ostatniego dnia daty
źródło