তারিখটি উইকএন্ড পিএইচপি হয় কিনা তা পরীক্ষা করা হচ্ছে


90

এই ফাংশনটি শুধুমাত্র মিথ্যা প্রত্যাবর্তন বলে মনে হচ্ছে। আপনারা কি একইরকম পাচ্ছেন? আমি নিশ্চিত যে আমি কিছু উপেক্ষা করছি তবে তাজা চোখ এবং এগুলি ...

function isweekend($date){
    $date = strtotime($date);
    $date = date("l", $date);
    $date = strtolower($date);
    echo $date;
    if($date == "saturday" || $date == "sunday") {
        return "true";
    } else {
        return "false";
    }
}

নিম্নলিখিতটি ব্যবহার করে আমি ফাংশনটি কল করি:

$isthisaweekend = isweekend('2011-01-01');

15
আপনার trueএবং falseস্ট্রিং হিসাবে উদ্ধৃত করা উচিত নয়। এছাড়াও আপনার কোডটিতে একটি পার্স ত্রুটি দেওয়া উচিত এবং এমনকি }যদি আপনার বিচ্যুত হওয়ার কারণে মোটেও চালানো হয় না ।
BoltClock

উত্তর:


221

আপনার যদি পিএইচপি> = 5.1 থাকে:

function isWeekend($date) {
    return (date('N', strtotime($date)) >= 6);
}

অন্যথায়:

function isWeekend($date) {
    $weekDay = date('w', strtotime($date));
    return ($weekDay == 0 || $weekDay == 6);
}

11
আপনি যদি পিএইচপি <5 ব্যবহার করেন তবে ব্যবহারটি return date('w', strtotime($date)) % 6 == 0কিছুটা ছোট।
জিম

23
এটি একই জিনিসটি করার সময়, আমি বলতে চাই যে কোডটি পড়ার জন্য সুস্পষ্ট চেকটি আরও সুস্পষ্ট।
চোরমাস্টার

4
তারপরে আবার সেই মতামতই কী।
স্টিফেন সাবাতিনি

13
ভাল, এমন কিছু লোক আছেন যারা বলেন যে কোডটি প্রচুর মন্তব্য ছাড়াই পঠনযোগ্য হওয়া উচিত। ভাল কোডটি পঠনযোগ্য - এবং অল্প অল্প অগত্যা। # ক্লেইনকোড
এনিউয়েবল

পরীক্ষার এবং রক্ষণাবেক্ষণের জন্য কম কোডের পরিমাণ কম। তবে যদি এটি অপঠনযোগ্য হয় তবে এটি পরীক্ষা করা ও বজায় রাখা আরও কঠিন। পঠনযোগ্যতা সম্পর্কে কি কঠোর এবং দ্রুত নিয়ম থাকতে হবে, বা এটি অভিজ্ঞতা থেকে নামা?
শায়িত অবস্থায়

49

আরেকটি উপায় হ'ল ডেটটাইম ক্লাস ব্যবহার করা , এইভাবে আপনি সময় অঞ্চলও নির্দিষ্ট করতে পারেন। দ্রষ্টব্য: পিএইচপি 5.3 বা তারও বেশি।

// For the current date
function isTodayWeekend() {
    $currentDate = new DateTime("now", new DateTimeZone("Europe/Amsterdam"));
    return $currentDate->format('N') >= 6;
}

আপনার যদি নির্দিষ্ট তারিখের স্ট্রিং পরীক্ষা করতে সক্ষম হতে হয় তবে আপনি ডেটটাইম :: ক্রিয়েটফর্মফোর্ম ব্যবহার করতে পারেন

function isWeekend($date) {
    $inputDate = DateTime::createFromFormat("d-m-Y", $date, new DateTimeZone("Europe/Amsterdam"));
    return $inputDate->format('N') >= 6;
}

এই উপায়টির সৌন্দর্য হ'ল আপনি পিএইচপি-তে বিশ্বব্যাপী টাইমজোনটি পরিবর্তন না করে টাইমজোনটি নির্দিষ্ট করতে পারেন যা অন্যান্য স্ক্রিপ্টগুলিতে পার্শ্ব-প্রতিক্রিয়া সৃষ্টি করতে পারে (প্রাক্তন ওয়ার্ডপ্রেস)।


4
আপনার উত্সাহটি ধরুন, তবে আমার মধ্যে প্যাডেন্ট আপনাকে সতর্ক করে দিচ্ছে যখন তারা সপ্তাহের একটি অতিরিক্ত দিন যুক্ত করার সিদ্ধান্ত নেয় এটি কেবল সপ্তাহের দিন হতে পারে :)
ট্রিকি

"এইভাবে আপনি সময় অঞ্চলও নির্দিষ্ট করতে পারবেন"। এই এসও পোস্ট অনুসারে , আপনি বিকল্প উপায়েও সময় অঞ্চল নির্দিষ্ট করতে পারেন। যদিও আমি আপনার সমাধানটি ব্যবহার করেছি
ওয়াউটার ভ্যানহার্ক

12

আপনি যদি উপরে পিএইচপি 5.5 বা পিএইচপি 7 ব্যবহার করে থাকেন তবে আপনি ব্যবহার করতে পারেন:

function isTodayWeekend() {
    return in_array(date("l"), ["Saturday", "Sunday"]);
}

এবং আজকের সপ্তাহান্তে "সত্য" এবং যদি "মিথ্যা" না হয় তবে ফিরে আসবে।


এটি কেবল ইংরেজি-ভাষা সাইটের জন্য কাজ করবে। এটি সংশোধন করা যেতে পারে, তবে একাধিক ভাষাসমূহের জন্য জটিল হয়ে উঠবে।
বব রায়

4
@ بابি রে ওহ ঠিক আছে দুঃখিত আমি এটি লেখার সময় খেয়াল করিনি
হার্ভে

9

এখানে:

function isweekend($year, $month, $day)
{
    $time = mktime(0, 0, 0, $month, $day, $year);
    $weekday = date('w', $time);
    return ($weekday == 0 || $weekday == 6);
}

8

আপনার কোডটির কার্যকারী সংস্করণ (বোল্টক্লক দ্বারা চিহ্নিত ত্রুটিগুলি থেকে):

<?php
$date = '2011-01-01';
$timestamp = strtotime($date);
$weekday= date("l", $timestamp );
$normalized_weekday = strtolower($weekday);
echo $normalized_weekday ;
if (($normalized_weekday == "saturday") || ($normalized_weekday == "sunday")) {
    echo "true";
} else {
    echo "false";
}

?>

বিপথগামী "{" দেখতে পাওয়া মুশকিল, বিশেষত শালীন পিএইচপি সম্পাদক ছাড়া (আমার ক্ষেত্রে)। সুতরাং আমি এখানে সংশোধিত সংস্করণ পোস্ট।


আপনার উদ্ধৃত সত্য বা মিথ্যাও ফিরে আসা উচিত নয় - বা আরও ভাল, কেবল শর্তটি ফিরিয়ে দিন।
আলেক্স

@ অ্যালেক্স: ফলাফলটি নিশ্চিত করতে আমি "প্রতিধ্বনি" ব্যবহার করি, তাই .. এটিই। পরামর্শের জন্য ধন্যবাদ.
হোং লং

2

আমার মতো ছেলেদের জন্য, যারা ন্যূনতম নয়, তাদের জন্য একটি পিইসিএল এক্সটেনশান রয়েছে যার নাম " ইনটেল "। আমি এটি আইডিএন রূপান্তরকরণের জন্য ব্যবহার করি কারণ এটি "আইডিএন" এক্সটেনশন এবং "এনটেলডিট ফরমেটার" এর মতো কিছু অন্যান্য এন 1 ক্লাসের চেয়ে ভাল কাজ করে।

ভাল, আমি যা বলতে চাই তা হল, "ইন্টেল" এক্সটেনশনের একটি ক্লাস রয়েছে "ইনটেলক্যালেন্ডার" যা অনেক আন্তর্জাতিক দেশকে পরিচালনা করতে পারে (যেমন সৌদি আরবে, রবিবার কোনও উইকএন্ডের দিন নয়)। ইন্টেলক্যালেন্ডারের একটি পদ্ধতি রয়েছে ইন্টেলক্যালেন্ডার :: এর জন্য উইন্ডেন্ড । সম্ভবত আপনি ছেলেরা এটি একটি শট দিন, আমি পছন্দ করি যে "এটি প্রায় প্রতিটি দেশের জন্য কাজ করে" এই আন্তঃ শ্রেণীর বিষয়গুলিতে fact

সম্পাদনা: পুরোপুরি নিশ্চিত নয় তবে পিএইচপি 5.5.0 থেকে ইনটেল এক্সটেনশনটি পিএইচপি (- সক্ষম-ইনটেল) এর সাথে বান্ডিল হয়েছে।


0

এটি আমার পক্ষে কাজ করে এবং পুনরায় ব্যবহারযোগ্য।

function isThisDayAWeekend($date) {

    $timestamp = strtotime($date);

    $weekday= date("l", $timestamp );

    if ($weekday =="Saturday" OR $weekday =="Sunday") { return true; } 
    else {return false; }

}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.