/ / Získajte hodnotu predchádzajúceho mesiaca v PHP - php

Získajte hodnotu predchádzajúceho mesiaca v systéme PHP - php

Použil som nižšiu funkciu PHP na získanie predchádzajúceho mesiaca,

$currmonth = date("m", strtotime("-1 month"));

Bolo to v poriadku a získal som hodnotu 04 až včera. Na dnes 31. mája (Posledný deň mesiaca máj), všimol som si, že funkcia vracia len aktuálny mesiac. To je 05, Existuje nejaká iná alternatívna funkcia, ktorá presne vracia predchádzajúci mesiac.

odpovede:

3 pre odpoveď č. 1

vyskúšať strtotime("first day of last month").

Na first day of dôležité je podrobne tu.


3 pre odpoveď č. 2

Doslova požiadať strtotime "prvý deň predchádzajúceho mesiaca" to zabezpečuje, že vyberie príslušný mesiac:-

$currmonth = date("m", strtotime("first day of previous month"));

3 pre odpoveď № 3

Môžete použiť OOP s DateTime triedy a upraviť metódu:

$now = new DateTime();
$previousMonth = $now->modify("first day of previous month");
echo $previousMonth->format("m");

3 pre odpoveď č. 4

strtotime() funguje presne. Problém je to, čo žiadate vrátiť.

"-1 mesiac" nie je to isté ako "predchádzajúci mesiac". Je to rovnaké ako "odčítať 1 od bežného mesiaca potom normalizovať výsledok".

na 2017-05-31, odčítaním 1 z aktuálneho mesiaca dostane 2017-04-31 ktorý nie je platný dátum. Po normalizácii, to sa stáva 2017-05-01, teda výsledok dostanete.

Existuje viac ako jeden spôsob, ako získať hodnoty, ktoré potrebujete.Napríklad:

// Today
$now = new DateTime("now");
// Create a date interval string to go back to the first day of the previous month
$int = sprintf("P1M%dD", $now->format("j")-1);
// Get the first day of the previous month as DateTime
$fdopm = $now->sub(new DateInterval($int));
// Verify it works
echo($fdopm->format("Y-m-d"));

// On 2017-05-31 it should print:
// 2017-04-01

0 pre odpoveď č. 5

Ak ste práve potrebujete získať číslo mesiaca predchádzajúceho mesiaca, takto by malo stačiť.

$m = idate("m") - 1;
// wrap to previous year
if ($m < 1) {
$m = 12 - abs($m) % 12;
}

To funguje s ľubovoľného počtu odpočítaný mesiacov.