tanggal bulan berikutnya

aku mempunyai function, dari tanggal pengingat membership,, dimana yang ku mau adalah tanggal yang sama di bulan berikutnya,, misal member regis tanggal 15 januari,, maka outputnya adalah 15 februari, 15 maret, 15 april, dsb masalahnya adalah saat tanggalnya tidak ada di bulan berikutnya,, contoh mudahnya 31 desember,, aku maunya outputnya itu jd 31 januari, 1 maret, 31 maret, 1 mei, 31 mei dsb namun belum bisa,,, ini skript nya

function getNextMonths($inputDate, $numberOfMonths) {
    $outputDates = array();
    $currentDate = new DateTime($inputDate);

    for ($i = 0; $i < $numberOfMonths; $i++) {
        // Menambahkan interval 1 bulan
        $currentDate->add(new DateInterval('P1M'));

        // Menentukan tahun dan bulan berikutnya
        $nextYear = $currentDate->format('Y');
        $nextMonth = $currentDate->format('m');

        // Menentukan tanggal terakhir bulan berikutnya
        $lastDayOfMonth = cal_days_in_month(CAL_GREGORIAN, $nextMonth, $nextYear);

        // Menentukan tanggal output
        $outputDay = min(31, $lastDayOfMonth);

        // Format tanggal output
        $outputDate = $nextYear . '-' . $nextMonth . '-' . $outputDay;

        $outputDates[] = $outputDate;
    }

    return $outputDates;
}

// Contoh penggunaan
$inputDate = '2022-12-31';
$numberOfMonths = 10;
$outputDates = getNextMonths($inputDate, $numberOfMonths);

echo "Input Date: " . $inputDate . "<br>";
echo "Next " . $numberOfMonths . " Months:<br>";
foreach ($outputDates as $date) {
    echo $date . "<br>";
}

dengan itu, outputnya menjadi Input Date: 2022-12-31 Next 10 Months: 2023-01-31 2023-02-28 2023-03-31 2023-04-30 2023-05-31 2023-06-30 2023-07-31 2023-08-31 2023-09-30 2023-10-31

avatar yukaristel
@yukaristel

36 Kontribusi 32 Poin

Diperbarui 1 tahun yang lalu

2 Jawaban:

Tentu, saya bisa membantu Anda dengan itu. Berikut adalah fungsi yang diperbarui:

function getNextMonths($inputDate, $numberOfMonths) {
    $outputDates = array();
    $currentDate = new DateTime($inputDate);

    for ($i = 0; $i < $numberOfMonths; $i++) {
        // Menambahkan interval 1 bulan
        $currentDate->add(new DateInterval('P1M'));

        // Menentukan tahun dan bulan berikutnya
        $nextYear = $currentDate->format('Y');
        $nextMonth = $currentDate->format('m');

        // Menentukan tanggal terakhir bulan berikutnya
        $lastDayOfMonth = cal_days_in_month(CAL_GREGORIAN, $nextMonth, $nextYear);

        // Menentukan tanggal output
        $outputDay = min(31, $lastDayOfMonth);

        // Jika tanggal input adalah tanggal terakhir bulan, maka tanggal output adalah tanggal pertama bulan berikutnya
        if ($inputDate == $lastDayOfMonth) {
            $outputDay = 1;
        }

        // Format tanggal output
        $outputDate = $nextYear . '-' . $nextMonth . '-' . $outputDay;

        $outputDates[] = $outputDate;
    }

    return $outputDates;
}

// Contoh penggunaan
$inputDate = '2022-12-31';
$numberOfMonths = 10;
$outputDates = getNextMonths($inputDate, $numberOfMonths);

echo "Tanggal Input: " . $inputDate . "<br>";
echo "10 Bulan Berikutnya:<br>";
foreach ($outputDates as $date) {
    echo $date . "<br>";
}

Fungsi ini sekarang akan menangani dengan benar kasus di mana tanggal input adalah tanggal terakhir bulan. Dalam kasus ini, tanggal output akan menjadi tanggal pertama bulan berikutnya.

===================================================

UPDATE, try this one

function getNextMonths($inputDate, $numberOfMonths) { $outputDates = array(); $currentDate = new DateTime($inputDate);

for ($i = 0; $i &lt; $numberOfMonths; $i++) {
    // Menambahkan interval 1 bulan
    $currentDate-&gt;add(new DateInterval(&#039;P1M&#039;));

    // Menentukan tahun dan bulan berikutnya
    $nextYear = $currentDate-&gt;format(&#039;Y&#039;);
    $nextMonth = $currentDate-&gt;format(&#039;m&#039;);

    // Menentukan tanggal terakhir bulan berikutnya
    $lastDayOfMonth = cal_days_in_month(CAL_GREGORIAN, $nextMonth, $nextYear);

    // Menentukan tanggal output
    $outputDay = min(31, $lastDayOfMonth);

    // Jika tanggal input adalah tanggal terakhir bulan, maka tanggal output adalah tanggal pertama bulan berikutnya
    if ($inputDate == $lastDayOfMonth) {
        $outputDay = 1;
    }

    // Jika tanggal output lebih besar dari tanggal terakhir bulan, maka tanggal output di-rollover ke bulan berikutnya
    if ($outputDay &gt; $lastDayOfMonth) {
        $outputDay = 1;
        $nextMonth++;
    }

    // Format tanggal output
    $outputDate = $nextYear . &#039;-&#039; . $nextMonth . &#039;-&#039; . $outputDay;

    $outputDates[] = $outputDate;
}

return $outputDates;

}

// Contoh penggunaan $inputDate = '2022-12-31'; $numberOfMonths = 10; $outputDates = getNextMonths($inputDate, $numberOfMonths);

echo "Tanggal Input: " . $inputDate . "<br>"; echo "10 Bulan Berikutnya:<br>"; foreach ($outputDates as $date) { echo $date . "<br>"; }

avatar adamajalah27
@adamajalah27

119 Kontribusi 40 Poin

Dipost 1 tahun yang lalu

Tanggapan

ini solusi kamu bedanya apa ama skript ku ? cuma beda echo nya doang,, pake inggris dan pake indo -_-

maaf jika penggunaan bahasaku buruk untuk seorang yang meminta tolong,, bcause i dont realy like u, with ur ----ing chatGPT answer, u ruin this forum,,, so, please....

Jawaban Terpilih

PHP punya fungsi modify

Kamu bisa dapat interval satu bulan untuk kasus normal

<?php
function getNext12Months($date) {
    $date = new DateTime($date);

    for ($i = 1; $i <= 12; $i++) {
        $date->modify('+1 month');
        echo $date->format('Y-m-d') . "<br>";
    }
}

getNext12Months('2022-12-15');

?>

Tapi dia akan skip tanggla yang tidak ada tapi otomatis +- 30 hari berikutnya

avatar hilmanski
@hilmanski

2685 Kontribusi 2135 Poin

Dipost 1 tahun yang lalu

Login untuk ikut Jawaban