পিএইচপি ব্যবহার করে একটি তারিখ থেকে সপ্তাহের কোনও দিনের তারিখটি কীভাবে সন্ধান করবেন?


86

যদি আমার কাছে একটি $date YYYY-mm-ddপেয়ে $dayথাকে এবং সপ্তাহে যে নির্দিষ্ট হয় (নির্দিষ্ট করে 0 (রবিবার) থেকে 6 (শনিবার) করতে চান YYYY-mm-ddতবে।

উদাহরণস্বরূপ, যদি আমি 2012-10-11হিসাবে $dateএবং 5হিসাবে পেয়েছিলাম $day, আমি পেতে চাই, আমি যেমন 2012-10-12পেয়েছি ,0$day2012-10-14

সম্পাদনা:
আপনারা বেশিরভাগই এটি ভুল বুঝেছিলেন। আমি কিছু তারিখ পেয়েছি, $dateএবং একই সপ্তাহে 0-6 দ্বারা নির্দিষ্ট একটি দিন পেতে চাই $date

তো না, আমি চাই না $date...


আপনার সপ্তাহ কখন শুরু হয়? সোমবার নাকি রবিবার? আমি জানি এটি বেশিরভাগ মানুষের জন্য সোমবার তবে আমি কেবল এটি নিশ্চিত করছি: p
কীসার

4
আমি মনে করি না যে উত্তর দেওয়া লোকেরা প্রশ্নটি সঠিকভাবে বুঝতে পেরেছিল। তিনি তারিখ অনুসারে দিনের একটি সংখ্যা পেতে চান না (যা তারিখ হবে ('ডাব্লু')) তবে তিনি তারিখ এবং দিন সংখ্যা নির্দিষ্ট করতে চান এবং নির্দিষ্ট তারিখ হিসাবে একই সপ্তাহ থেকে সংশ্লিষ্ট তারিখটি পেতে চান .. ।
ভফলিক

উত্তর:



90

আপনি তারিখ () ফাংশনটি ব্যবহার করতে পারেন:

date('w'); // day of week

বা

date('l'); // dayname

NR দিনটি পেতে ফাংশনটির উদাহরণ:

function getWeekday($date) {
    return date('w', strtotime($date));
}

echo getWeekday('2012-10-11'); // returns 4

17

চেষ্টা করুন

$date = '2012-10-11';
$day  = 1;
$days = array('Sunday', 'Monday', 'Tuesday', 'Wednesday','Thursday','Friday', 'Saturday');
echo date('Y-m-d', strtotime($days[$day], strtotime($date)));

4
ভাল পন্থা, তবে আপনি রেজিন্ডের উত্তরে যেমন দেখতে পাচ্ছেন, আপনি '1 দিন'ও ব্যবহার করতে পারেন, $ দিনগুলিকে অ্যারে অকেজো করে।
জুলাকিস

4
এটি আরও সঠিক বলে মনে হচ্ছে কারণ 2012-10-14আপনি ইনপুট 0দেওয়ার সময় এটি সঠিক তারিখটি ফেরায়, @ পুনঃনির্দেশিত ফেরত2012-10-07
কার্ল

7

যদি আপনার তারিখটি ইতিমধ্যে এক DateTimeবা হয়DateTimeImmutable আপনি formatপদ্ধতিটি ব্যবহার করতে পারেন ।

$day_of_week = intval($date_time->format('w'));

বিন্যাসের স্ট্রিংটি ব্যবহার করে একটির মতো তারিখ ফাংশন ।


উদ্দেশ্যে করা প্রশ্নের উত্তর দিতে:

$date_time->modify($target_day_of_week - $day_of_week . ' days');

5

পিএইচপি ম্যানুয়াল বলেছেন:

w সপ্তাহের দিনের সংখ্যা প্রতিনিধিত্ব

সুতরাং আপনি এমকেটাইমের সাহায্যে একটি তারিখ তৈরি করতে পারেন এবং এটিতে ব্যবহার করতে পারেন date("w", $yourTime);


4

ঠিক:

2012-10-11 তারিখ হিসাবে এবং 5 দিন হিসাবে

<?php
$day=5;
$w      = date("w", strtotime("2011-01-11")) + 1; // you must add 1 to for Sunday

echo $w;

$sunday = date("Y-m-d", strtotime("2011-01-11")-strtotime("+$w day"));

$result = date("Y-m-d", strtotime($sunday)+strtotime("+$day day"));

echo $result;

?>

ফলাফল = '2012-10-12' আপনি যা চান তা হ'ল।


1

আমি ভয় করি আপনি নিজে এটি করতে হবে। তারিখের বর্তমান দিনের সপ্তাহটি পান, অফসেটটি গণনা করুন এবং অফসেটটি তারিখে যুক্ত করুন।

$current = date("w", $date)
$offset = $day - $current
$new_date = new DateTime($date)
    ->add(
        new DateInterval($offset."D")
    )->format('Y-m-d')

4
আপনার পদ্ধতির জন্য ধন্যবাদ, কিন্তু না, আমাকে এটি ম্যানুয়ালি করতে হবে না। রেজিন্ডের উত্তরটি একবার দেখুন।
জুলাকিস

1

পর্তুগিজ (ব্রাজিল) এর জন্য আমাকে অনুরূপ সমাধান ব্যবহার করতে হয়েছিল:

<?php
$scheduled_day = '2018-07-28';
$days = ['Dom','Seg','Ter','Qua','Qui','Sex','Sáb'];
$day = date('w',strtotime($scheduled_day));
$scheduled_day = date('d-m-Y', strtotime($scheduled_day))." ($days[$day])";
// provides 28-07-2018 (Sáb)

1
<?php echo date("H:i", time()); ?>
<?php echo $days[date("l", time())] . date(", d.m.Y", time()); ?>

সরল, এই কৌশলটি করা উচিত

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