လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> ရက်သတ္တပတ်များနုတ်ရန် Date_sub function ကိုသုံးပါ။ စနေ, တနင်္ဂနွေကိုရှောင်ရှားရန်

ရက်သတ္တပတ်များနုတ်ရန် Date_sub function ကိုသုံးပါ။ စနေ, တနင်္ဂနွေကိုရှောင်ရှားရန်

gitbox 2025-05-28

ရက်အရေအတွက်ကိုလျှော့ချရန်အဘယ်ကြောင့်အမှားတစ်ခုဖြစ်သနည်း။

ဥပမာအားဖြင့်, ယနေ့တနင်္လာနေ့ (2025-05-26) ဆိုပါစို့။ သင်တိုက်ရိုက်အသုံးပြုပါက:

 $date = new DateTime('2025-05-26');
$date->sub(new DateInterval('P3D')); // အနှုတ်3မိုးကောင်းကင်
echo $date->format('Y-m-d');

ရလဒ်မှာ 2025-05-23 (သောကြာနေ့) (သောကြာနေ့) သည်မှန်ကန်ပုံရသည်။ သို့သော်စတင်ရက်စွဲသည်တနင်္လာနေ့နှင့်အလုပ်လုပ်ရက်များသည်ကြီးမားသည်ဆိုပါကစနေနေ့နှင့်တနင်္ဂနွေနေ့များတွင်စနေနေ့နှင့်တနင်္ဂနွေတို့ပါဝင်သည်။


ဖြေရှင်းချက်စိတ်ကူးများ

  1. သံသရာလျှော့ချရေးရက်များ - လျှော့ချရေးနေ့တိုင်းတစ်နေ့တာသည်တနင်္ဂနွေနေ့ (စနေနေ့သို့မဟုတ်တနင်္ဂနွေ) သည်ရှိမရှိကို ဦး စွာဆုံးဖြတ်ပါ။

  2. စနေ, တနင်္ဂနွေကိုကျော်သွားပါ ။ အကယ်. ထိုနေ့သည်တနင်္ဂနွေနေ့ဖြစ်ပါက,

  3. လိုအပ်ချက်များနှင့်ကိုက်ညီရန်အလုပ်လုပ်ရက်အရေအတွက်ကိုဆက်လက်လျှော့ချရန်


Code Page

အောက်တွင်ဖော်ပြထားသောနမူနာ function nunctioningingdays များ ဖြစ်ပြီးသတ်မှတ်ထားသောနေ့စွဲဖြင့်စတင်သည်, သတ်မှတ်ထားသောရက်စွဲတစ်ခုဖြင့်စတင်သည်, သတ်မှတ်ထားသောနေ့အရေအတွက်ကိုနုတ်ယူပြီးစနေ,

 function subtractWorkingDays(DateTime $date, int $days): DateTime {
    $result = clone $date; // Cloning မူရင်းအရာဝတ်ထုကိုပြုပြင်မွမ်းမံခြင်းကိုရှောင်ကြဉ်သည်
    while ($days > 0) {
        $result->sub(new DateInterval('P1D')); // 每次减少一မိုးကောင်းကင်
        $weekday = (int)$result->format('N'); // 1 (တနင်္လာနေ့တွင်) ရောက်လာ 7 (တနင်္ဂနေှနေ့)
        if ($weekday < 6) { // 只有တနင်္လာနေ့တွင်ရောက်လာ周五才算作工作日
            $days--;
        }
    }
    return $result;
}

// အသုံးပြုမှုဥပမာ
$startDate = new DateTime('2025-05-26');
$workDaysToSubtract = 3;

$newDate = subtractWorkingDays($startDate, $workDaysToSubtract);
echo $newDate->format('Y-m-d'); // အဆိုပါ output ရလဒ်ဖြစ်ပါတယ်2025-05-21,တနင်္ဂနွေကိုမှန်ကန်စွာကျော်လိုက်ပါ

သုံးသပ်ကြည့်ရှုခြင်း

  • ရက်သတ္တပတ်အရေအတွက်ရရန် format ('n') ကို သုံးပါ, 1 မှာတနင်္လာနေ့နှင့် 7 သည်တနင်္ဂနွေနေ့ဖြစ်သည်။

  • တစ်နေ့တာသည်အလုပ်လုပ်သည့်နေ့တွင် (1 ~ 5) သည်ဒေါ်လာ (1 ~ 5) သည်လျော့နည်းသွားသည်။

  • Looping အားဖြင့်, ရက်အရေအတွက်အရေအတွက်သည်အလုပ်များသက်သက်သာအလုပ်လုပ်ရန်သေချာအောင်လုပ်ပါ။


အကျဉ်းချုပ်

  • ရက်အရေအတွက်ကိုနုတ်ရန် Day_sub ကို တိုက်ရိုက်အသုံးပြုသည့်အခါ, ၎င်းသည်စနေ,

  • ၎င်းသည်နေ့စဉ်နေ့ကောင်း, မရှိ, ရှိမရှိကိုသိသိသာသာဆုံးဖြတ်ခြင်းဖြင့်အလုပ်လုပ်သည့်နေ့တွင်သာရေတွက်ခြင်းအားဖြင့်အလုပ်ရက်များကိုနုတ်ရန်လိုအပ်သည့်လိုအပ်ချက်မှာတိကျစွာအကောင်အထည်ဖော်ရန်လိုအပ်သည်။

  • ဤနည်းလမ်းသည်ရိုးရိုးရှင်းရှင်းနှင့်အကျိုးရှိသည်။