পিএইচপি তে সপ্তাহের প্রথম দিন পান?


124

একটি তারিখের MM-dd-yyyyফর্ম্যাট দেওয়া হয়েছে, কেউ কি আমাকে সপ্তাহের প্রথম দিন পেতে সহায়তা করতে পারে?


4
সপ্তাহের প্রথম দিন বলতে কী বোঝ? তুমি কি সান, সোম মানে? বা আপনি সপ্তাহের প্রথম দিনের তারিখ বলতে চান?
জেফ্রি হাইন্স 21

2
সপ্তাহের প্রথম দিনটি স্থির থাকে: এটি সোমবার (অথবা সম্ভবত রবিবার)। আপনি কি বোঝাতে চেয়েছেন যে আপনি প্রদত্ত সালিশী তারিখের আগের সোমবারের তারিখটি পেতে চান?
জন ক্র্যাম

পিএইচপি - 4 বা 5 এর কোন সংস্করণ?
জন ক্র্যাম

সপ্তাহের রবিবার তারিখ। পিএইচপি 5
ইগি মা

আজব, তিনি একটি DateTimeসমাধান চাইছেন এবং বেশিরভাগ উত্তরই এটি সরবরাহ করে না। =)
লিন

উত্তর:


143

আমি যা ব্যবহার করছি তা এখানে ...

$day = date('w');
$week_start = date('m-d-Y', strtotime('-'.$day.' days'));
$week_end = date('m-d-Y', strtotime('+'.(6-$day).' days'));

দিনে সপ্তাহের দিন (রবিবার = 0, সোমবার = 1 ইত্যাদি) উপস্থাপন করে 0 থেকে 6 নম্বর পর্যন্ত একটি সংখ্যা থাকে etc.
$ সাপ্তাহিক_সপ্তাহে মিমি-ডিডি-ইয়াই হিসাবে বর্তমান সপ্তাহের রবিবারের তারিখ রয়েছে।
$ সপ্তাহ_এন্ডে মিমি-ডিডি-ইয়েই হিসাবে চলতি সপ্তাহের শনিবারের তারিখ রয়েছে।


1
তবে, এর অর্থ 'এই সপ্তাহের' শুরু এবং শেষ, তাই না?
ওকি এরি রিনালাদি

যদি সপ্তাহের নম্বর দেওয়া হয়? এবং আমি চাই যে এটি সপ্তাহের শুরু এবং শেষ তারিখটি ফেরত পাঠাবে।
ওকি এরি রিনালাদি

1
@ ওকিরিরিণালদী যথাযথ মনোযোগ পাওয়ার জন্য আপনার সম্ভবত একটি নতুন প্রশ্ন খোলা উচিত।
জেডেডোর

চিন্তা করবেন না, আমি এটি @ জেডকোর পেয়েছি!
ওকি এরি রিনালাদি

আমি নিশ্চিত না যে অন্যটি কেন বেশি। এটি কাজ করে না, তবে এইটি করে! 3v4l.org/q6kKY
জেসন

67
strtotime('this week', time());

সময় প্রতিস্থাপন ()। বর্তমান রবিবার / সোমবার সোমবার যখন শেষ রবিবার / শেষ সোমবার পদ্ধতিগুলি কাজ করবে না।


55
$monday = strtotime('last monday', strtotime('tomorrow'));
লুইস বাকলে

this weekআপনার সপ্তাহের আগের শুরুতে সর্বদা প্রয়োজন থাকলে কাজ করে না, তবে @ লুইসবকলির মন্তব্য এটি করে।
স্মার

time()আপনি যদি আজ উল্লেখ করতে চান তবে দ্বিতীয় যুক্তিটি specifyচ্ছিক।
Ifnot

আমার পক্ষে কাজ করেনি, ওয়াইটিডি, এমটিডি, ডাব্লুটিডি-র জন্য আমাকে কিছুটা আলাদা সিনট্যাক্স দেখতে হয়েছিল।
রন 0

6
এই উত্তরটি ব্যবহৃত পিএইচপি সংস্করণের উপর নির্ভর করে অসামঞ্জস্যপূর্ণ ফলাফল উত্পন্ন করে: 3v4l.org/Z3k4E @ লুইসবকলির সমাধান সমস্ত সংস্করণের জন্য সামঞ্জস্যপূর্ণ: 3v4l.org/Eeh9c
ক্রিস বেকার

62

strtotimeফাংশনটি ব্যবহার করা খুব সহজ :

echo date("Y-m-d", strtotime('monday this week')), "\n";   

echo date("Y-m-d", strtotime('sunday this week')), "\n";

এটি পিএইচপি সংস্করণ জুড়ে কিছুটা পৃথক :

5.3.0 - 5.6.6, php7 @ 20140507 - 20150301, hhvm-3.3.1 - 3.5.1 এর আউটপুট

2015-03-16
2015-03-22

4.3.5 - 5.2.17 এর আউটপুট

2015-03-23
2015-03-22

4.3.0 - 4.3.4 এর আউটপুট

2015-03-30
2015-03-29

এজ-কেসে তুলনা করা

এই সপ্তাহের মতো সম্পর্কিত সম্পর্কিত বিবরণগুলির নিজস্ব প্রসঙ্গ রয়েছে। নিম্নলিখিতটি সোমবার বা রবিবার যখন এই সোমবার বা রবিবারের ফলাফল দেখায় :

$date = '2015-03-16'; // monday
echo date("Y-m-d", strtotime('monday this week', strtotime($date))), "\n";   
echo date("Y-m-d", strtotime('sunday this week', strtotime($date))), "\n";

$date = '2015-03-22'; // sunday
echo date("Y-m-d", strtotime('monday this week', strtotime($date))), "\n";   
echo date("Y-m-d", strtotime('sunday this week', strtotime($date))), "\n";

এর বিপরীতে পিএইচপি সংস্করণ জুড়ে এটি কিছুটা পৃথক :

5.3.0 - 5.6.6, php7 @ 20140507 - 20150301, hhvm-3.3.1 - 3.5.1 এর আউটপুট

2015-03-16
2015-03-22
2015-03-23
2015-03-29

4.3.5 - 5.0.5, 5.2.0 - 5.2.17 এর আউটপুট

2015-03-16
2015-03-22
2015-03-23
2015-03-22

5.1.0 - 5.1.6 এর আউটপুট

2015-03-23
2015-03-22
2015-03-23
2015-03-29

4.3.0 - 4.3.4 এর আউটপুট

2015-03-23
2015-03-29
2015-03-30
2015-03-29

কেন এটি 2016-06-05 তারিখের জন্য কাজ করছে না, এটি পরবর্তী সপ্তাহের তারিখ দিচ্ছে।

1
এর জন্য ধন্যবাদ, আমি কেবল এই কোডটি সংশোধন করেছি যাতে আমি একটি alচ্ছিক তারিখের প্যারামিটারটি can dt = $ কাস্টম_ডেট পাস করতে পারি? স্ট্রোটোটাইম ($ কাস্টম_ডেট): সময় (); $ সোমবার = তারিখ ("Ymd", স্ট্রোটোটাইম ('এই সপ্তাহে সোমবার', $ dt)); nd রবিবার = তারিখ ("Ymd", স্ট্রোটোটাইম ('এই সপ্তাহে রবিবার', $ dt));
রন মাইকেল

47

সহজবোধ্য রাখো :

<?php    
$dateTime = new \DateTime('2020-04-01');
$monday = clone $dateTime->modify(('Sunday' == $dateTime->format('l')) ? 'Monday last week' : 'Monday this week');
$sunday = clone $dateTime->modify('Sunday this week');    
?>

সূত্র: পিএইচপি ম্যানুয়াল

এনবি: কিছু ব্যবহারকারী মন্তব্য হিসাবে $ তারিখের সময় মান পরিবর্তন করা হবে।


সম্পাদনা: টাইপো বা কিছু অজানা বাক্য গঠন? আমি কোথা থেকে এসেছি? $dateTime = new \DateTime('2012-05-14');
স্লিক

2
আপনার অ্যাপ্লিকেশনটির কোনও সম্ভাব্য অটোলোজেড অবজেক্টের সাথে কোনও দ্বন্দ্ব এড়াতে আমি এটি করছি। এটি পরম পথ বা আপেক্ষিক পথের মতো।
জব

9
@ পানিক - "অজানা বাক্য গঠন" পিএইচপি 5.3 এর নেমস্পেস সিনট্যাক্স। নেমস্পেসিং আপনাকে ব্যাকস্ল্যাশ অনুসরণ করে নেমস্পেসের সাহায্যে একটি শ্রেণীর উপসর্গ করতে দেয়। মূল DateTimeক্লাসটি নির্দিষ্ট করতে তিনি এখানে কোনও নামস্থান ছাড়াই এটি ব্যবহার করছেন , যার অর্থ কোডটি DateTimeচলমান নেমস্পেসে অন্য শ্রেণি কল করা হলেও কাজ করবে work
স্পডলি

দিনের নামটি কি সর্বদা ইংরেজিতে থাকে?
মার্ভেলেন

1
ক্লোন অংশটি সঠিকভাবে কাজ করছে না। আপনার প্রথমে ক্লোন করা উচিত তারপর ক্লোনটিতে অপারেশন করা উচিত যদি আপনার আসল প্রয়োজন হয় make
ফরিদ মুভসুমভ

25
$givenday = date("w", mktime(0, 0, 0, MM, dd, yyyy));

এটি আপনাকে প্রদত্ত তারিখের সপ্তাহের দিনটি দেয় যেখানে 0= রবিবার এবং 6= শনিবার। সেখান থেকে আপনি সহজেই পিছনের দিকে গণনা করতে পারেন যে দিনটি আপনি চান।


6
প্রদত্ত তারিখটি রবিবার বা সোমবার ইত্যাদি এই উত্তরটি প্রত্যাবর্তন করে তবে প্রশ্নকর্তা মূল প্রশ্নের বিষয়ে তার মন্তব্যে উল্লিখিত তারিখের সপ্তাহের রবিবারের তারিখ চেয়েছিলেন।
রাকিব

19

এই প্রশ্নের একটি ভাল ডেটটাইম উত্তর দরকার: -

function firstDayOfWeek($date)
{
    $day = DateTime::createFromFormat('m-d-Y', $date);
    $day->setISODate((int)$day->format('o'), (int)$day->format('W'), 1);
    return $day->format('m-d-Y');
}

var_dump(firstDayOfWeek('06-13-2013'));

আউটপুট: -

string '06-10-2013' (length=10)

এটি বছরের সীমানা এবং লিপ বছরগুলি নিয়ে কাজ করবে।


18

সম্পাদনা: নীচের লিঙ্কটি পিএইচপি বর্ণিত সংস্করণে আর চলবে না। এটি পিএইচপি 5.6 এ চলছে যা স্ট্রোটোটাইমের নির্ভরযোগ্যতা উন্নত করে, তবে নিখুঁত নয়! টেবিলের ফলাফলগুলি পিএইচপি 5.6 থেকে সরাসরি ফলাফল।

এটির মূল্যের জন্য, রেফারেন্সের একটি সামঞ্জস্যপূর্ণ ফ্রেম নির্ধারণ করার সময় স্ট্রোটোটাইমের জঞ্জাল আচরণের একটি ভাঙ্গন এখানে রয়েছে:

http://gamereplays.org/reference/strtotime.php

মূলত কেবলমাত্র এই স্ট্রিংগুলি নির্ভরযোগ্যতার সাথে আপনাকে একই তারিখটি দেবে, আপনি যখন সপ্তাহে কল করবেন তখন কোনও সপ্তাহেই আপনি থাকছেন না কেন:

strtotime("next monday");
strtotime("this sunday");
strtotime("last sunday"); 

নিবন্ধটি ব্যবহারের জন্য কিছু নির্দিষ্ট কোডও দিয়েছে: $ start_of_week = স্ট্রোটোটাইম ("পরবর্তী সোমবার - 1 সপ্তাহ"); // চলতি সপ্তাহের সোমবারে 00:00:00 এ ফিরে আসবে "$ শেষ_আফ_উইক = স্ট্রোটটাইম (" পরবর্তী সোমবার - 1 সেকেন্ড "); // বর্তমান সপ্তাহের রবিবার 23:59:59 এ শেষ হবে"
স্কট এম। স্টলজ

11

নিম্নলিখিত কোডটি যে কোনও কাস্টম তারিখের সাথে কাজ করা উচিত, কেবলমাত্র পছন্দসই তারিখের ফর্ম্যাট ব্যবহার করে।

$custom_date = strtotime( date('d-m-Y', strtotime('31-07-2012')) ); 
$week_start = date('d-m-Y', strtotime('this week last monday', $custom_date));
$week_end = date('d-m-Y', strtotime('this week next sunday', $custom_date));
echo '<br>Start: '. $week_start;
echo '<br>End: '. $week_end;

আমি পিএইচপি 5.2.17 ফলাফলের সাথে কোডটি পরীক্ষা করেছি:

Start: 30-07-2012
End: 05-08-2012

1
এটি সর্বদা পূর্ববর্তী সোমবারে ফিরে আসবে তা উল্লেখযোগ্য, সুতরাং যদি $ কাস্টম_ডেট একটি সোমবার হয় তবে এটি এক সপ্তাহ আগে সোমবারের তারিখটি ফিরিয়ে দেবে।
হিল 79

2
সঠিকভাবে কাজ করে না, আজ রবিবার, ফলাফলগুলি: শুরু:
09-09-2013

10

সোমবারকে সপ্তাহের প্রথম দিন হিসাবে ধরে নেওয়া, এটি কাজ করে:

echo date("M-d-y", strtotime('last monday', strtotime('next week', time())));

1
"এমএম-ডিডি-ইয়েই" "ওয়াইএমডি" এর মতো নয়, দয়া করে প্রশ্নের উত্তরটির জন্য আপনার উত্তরটি তৈরি করুন।
ইয়েজেগেনি আফানসিয়েভ

1
তারিখ ("এমএম-ডিডি-ইয়াই") তারিখটি আউটপুট করে: নভনভ -0202-15151515। আমি আশা করি এটি হওয়া উচিত: তারিখ ("এমডি") যা পঠনযোগ্য তারিখকে যেমন: নভেম্বর -২০-১৫কে আউটপুট করে
শশী কাঁথ

"এমএম-ডিডি-ইয়েই" প্রশ্ন থেকে আসে। এর অর্থ কী তা আপনি যদি নিশ্চিত না হন তবে - প্রশ্নের একটি মন্তব্যে এটি জিজ্ঞাসা করুন। আপনার উত্তর পরিবর্তন করার জন্য আপনাকে ধন্যবাদ।
ইয়েভেগেনি আফানসিয়েভ

9

এ কেমন?

$first_day_of_week = date('m-d-Y', strtotime('Last Monday', time()));
$last_day_of_week = date('m-d-Y', strtotime('Next Sunday', time()));

8
সোমবার শেষ সোমবার আপনাকে আগের সোমবার দিবে।
ইক্কে

8

এটি আমি কোনও তারিখ থেকে সপ্তাহের প্রথম এবং শেষ দিনটি পেতে ব্যবহার করছি । এক্ষেত্রে সোমবার সপ্তাহের প্রথম দিন ...

$date = date('Y-m-d') // you can put any date you want
$nbDay = date('N', strtotime($date));
$monday = new DateTime($date);
$sunday = new DateTime($date);
$monday->modify('-'.($nbDay-1).' days');
$sunday->modify('+'.(7-$nbDay).' days');

1
এটাই আসল উত্তর!
ম্যানুয়েল

1
একটি যাদুমন্ত্র মত কাজ করে!
লিগা

6

এখানে আমি রবিবারকে প্রথম ও শনিবারকে সপ্তাহের শেষ দিন হিসাবে বিবেচনা করছি।

$m = strtotime('06-08-2012');  
$today =   date('l', $m);  
$custom_date = strtotime( date('d-m-Y', $m) );   
if ($today == 'Sunday') {  
   $week_start = date("d-m-Y", $m);  
} else {  
  $week_start = date('d-m-Y', strtotime('this week last sunday', $custom_date));  
}  

if ($today == 'Saturday') {  
  $week_end = date("d-m-Y", $m);
} else {  
  $week_end = date('d-m-Y', strtotime('this week next saturday', $custom_date));  
}
echo '<br>Start: '. $week_start;  
echo '<br>End: '. $week_end;  

আউটপুট:

শুরু: 05-08-2012
শেষ: 11-08-2012



4

এটা চেষ্টা কর:

function week_start_date($wk_num, $yr, $first = 1, $format = 'F d, Y')
{
    $wk_ts  = strtotime('+' . $wk_num . ' weeks', strtotime($yr . '0101'));
    $mon_ts = strtotime('-' . date('w', $wk_ts) + $first . ' days', $wk_ts);
    return date($format, $mon_ts);
}

$sStartDate = week_start_date($week_number, $year);
$sEndDate   = date('F d, Y', strtotime('+6 days', strtotime($sStartDate)));

( এই ফোরামের থ্রেড থেকে )


কীভাবে আমি সপ্তাহের নম্বর এবং বছরটি পেতে পারি? এমএম-ডিডি-ইয়াই ফর্ম্যাটে আমার একটি স্ট্রিং ডেট রয়েছে
আইগি মা

4

এটি আমি খুঁজে পেয়েছি সবচেয়ে স্বল্পতম এবং সবচেয়ে পঠনযোগ্য সমাধান:

    <?php
    $weekstart = strtotime('monday this week');
    $weekstop = strtotime('sunday this week 23:59:59');
    //echo date('d.m.Y H:i:s', $weekstart) .' - '. date('d.m.Y H:i:s', $weekstop);
    ?>

strtotimeতুলনায় দ্রুত new DateTime()->getTimestamp()


এটি নিখুঁত, অস্ট্রেলিয়ান / ইউকে তারিখগুলির জন্য আমার
ফিক্সটি দেখুন


2

নিম্নলিখিত পিএইচপি সংস্করণ 5.3 পূর্বের প্রদত্ত ফাংশন আপনাকে প্রদত্ত তারিখের সপ্তাহের প্রথম দিন দেয় (এই ক্ষেত্রে - রবিবার, 2013-02-03):

<?php
  function startOfWeek($aDate){
    $d=strtotime($aDate);
    return strtotime(date('Y-m-d',$d).' - '.date("w",$d).' days');
  }

  echo(date('Y-m-d',startOfWeek("2013-02-07")).'
');
?>

2
$today_day = date('D'); //Or add your own date
$start_of_week = date('Ymd');
$end_of_week = date('Ymd');

if($today_day != "Mon")
    $start_of_week = date('Ymd', strtotime("last monday"));

if($today_day != "Sun")
                    $end_of_week = date('Ymd', strtotime("next sunday"));

2
$monday = date('d-m-Y',strtotime('last monday',strtotime('next monday',strtotime($date))));

আপনাকে প্রথমে পরের সোমবার পেতে হবে তার পরের সোমবারের 'শেষ সোমবার' পেতে হবে। সুতরাং প্রদত্ত তারিখটি সোমবার হলে গত সপ্তাহে সোমবার নয় একই তারিখটি ফিরে আসবে।


2

আপনি যদি সপ্তাহের শুরু হিসাবে সোমবার চান তবে এটি করুন:

$date = '2015-10-12';
$day = date('N', strtotime($date));
$week_start = date('Y-m-d', strtotime('-'.($day-1).' days', strtotime($date)));
$week_end = date('Y-m-d', strtotime('+'.(7-$day).' days', strtotime($date)));

কি এই বাঞ্ছনীয় তোলে এই উত্তর , বা এই উত্তর ? আমার কাছে মনে হয় 30 টি অন্যান্য
উত্তরে

ধন্যবাদ. এটি সহজ সমাধান এবং এটি একটি কবজির মতো কাজ করে।
ওলেগ পপোভ

2

এটি করার একটি দুর্দান্ত উপায় হ'ল পিএইচপি হ্যান্ডেল সময় অঞ্চল পার্থক্য এবং দিবালোক সঞ্চয় সময় (ডিএসটি) হ্যান্ডেল করা। এটি আপনাকে কীভাবে করতে হয় তা আমি আপনাকে দেখায়।

এই ফাংশনটি সোমবার থেকে শুক্রবার পর্যন্ত সমস্ত দিন উত্পন্ন করবে, অন্তর্ভুক্ত (কাজের সপ্তাহের দিনগুলি উত্পন্ন করার জন্য সুবিধাজনক):

class DateTimeUtilities {
    public static function getPeriodFromMondayUntilFriday($offset = 'now') {
        $now = new \DateTimeImmutable($offset, new \DateTimeZone('UTC'));
        $today = $now->setTime(0, 0, 1);

        $daysFromMonday = $today->format('N') - 1;

        $monday = $today->sub(new \DateInterval(sprintf('P%dD', $daysFromMonday)));
        $saturday = $monday->add(new \DateInterval('P5D'));

        return new \DatePeriod($monday, new \DateInterval('P1D'), $saturday);
    }
}

foreach (DateTimeUtilities::getPeriodFromMondayUntilFriday() as $day) {
    print $day->format('c');
    print PHP_EOL;
}

এটি চলতি সপ্তাহের সোমবার-শুক্রবারের তারিখের সময়গুলি ফিরে আসবে। একটি স্বেচ্ছাসেবী তারিখের জন্য একই কাজ করতে DateTimeUtilities ::getPeriodFromMondayUntilFriday, প্যারামিটার হিসাবে একটি তারিখ এখানে প্রেরণ করুন :

foreach (DateTimeUtilities::getPeriodFromMondayUntilFriday('2017-01-02T15:05:21+00:00') as $day) {
    print $day->format('c');
    print PHP_EOL;
}

//prints 
//2017-01-02T00:00:01+00:00
//2017-01-03T00:00:01+00:00
//2017-01-04T00:00:01+00:00
//2017-01-05T00:00:01+00:00
//2017-01-06T00:00:01+00:00

শুধু সোমবারে আগ্রহী, যেমন ওপি জিজ্ঞাসা করেছে?

$monday = DateTimeUtilities::getPeriodFromMondayUntilFriday('2017-01-02T15:05:21+00:00')->getStartDate()->format('c');
print $monday;
// prints
//2017-01-02T00:00:01+00:00

1

আপনি তারিখটি বিশ্লেষণ করে ফলাফলটিতে strptime()ব্যবহার date()করেছেন:

date('N', strptime('%m-%d-%g', $dateString));

1
<?php
/* PHP 5.3.0 */

date_default_timezone_set('America/Denver'); //Set apprpriate timezone
$start_date = strtotime('2009-12-15'); //Set start date

//Today's date if $start_date is a Sunday, otherwise date of previous Sunday
$today_or_previous_sunday = mktime(0, 0, 0, date('m', $start_date), date('d', $start_date), date('Y', $start_date)) - ((date("w", $start_date) ==0) ? 0 : (86400 * date("w", $start_date)));

//prints 12-13-2009 (month-day-year)
echo date('m-d-Y', $today_or_previous_sunday);

?>

(দ্রষ্টব্য: প্রশ্নে এমএম, ডিডি এবং ইয়ি স্ট্যান্ডার্ড পিএইচপি তারিখের বিন্যাস সিনট্যাক্স নয় - আমি কী বোঝাতে চাই তা নিশ্চিত হতে পারছি না, তাই আমি আইএসও-বছর-মাসের সাথে $ start_date সেট করেছি)


1

এটি করার আরেকটি উপায় ....

$year = '2014';
$month = '02';
$day = '26';

$date = DateTime::createFromFormat('Y-m-d H:i:s', $year . '-' . $month . '-' . $day . '00:00:00');
$day = date('w', $date->getTimestamp());

// 0=Sunday 6=Saturday
if($day!=0){

   $newdate = $date->getTimestamp() - $day * 86400;  //86400 seconds in a day

   // Look for DST change 
   if($old = date('I', $date->getTimestamp()) != $new = date('I', $newdate)){
       if($old == 0){
           $newdate -= 3600;  //3600 seconds in an hour
       } else {
           $newdate += 3600;
       }
   }

   $date->setTimestamp($newdate);
}

echo $date->format('D Y-m-d H:i:s');

1

চলতি সপ্তাহের প্রথম দিন (সোমবার) পাওয়ার সহজতম উপায়:

strtotime("next Monday") - 604800;

যেখানে 604800 - 1 সপ্তাহের মধ্যে সেকেন্ডের গণনা (60 * 60 * 24 * 7)।

এই কোডটি আগামী সোমবার পান এবং এটি 1 সপ্তাহের জন্য হ্রাস করুন। এই কোডটি সপ্তাহের যে কোনও দিন ভালভাবে কাজ করবে। আজ সোমবার হলেও।


1

আমার টাইমজোনটি অস্ট্রেলিয়ান এবং এটি পেয়ে আমি বেশ হতাশাবোধ পেয়েছি strtotime() যুক্তরাজ্যের তারিখগুলি ঘৃণা করে

যদি বর্তমান দিনটি রবিবার হয়, তবে strtotime("monday this week")পরের দিন ফিরে আসবে।

এটি কাটিয়ে উঠতে:

সতর্কতা : এটি কেবল অস্ট্রেলিয়ান / ইউকে তারিখের জন্য বৈধ

$startOfWeek = (date('l') == 'Monday') ? date('d/m/Y 00:00') : date('d/m/Y', strtotime("last monday 00:00"));
$endOfWeek = (date('l') == 'Sunday') ? date('d/m/Y 23:59:59') : date('d/m/Y', strtotime("sunday 23:59:59"));

2
এটি মার্কিন যুক্তরাষ্ট্রের তারিখগুলির জন্যও কাজ করে। আমি নিউইয়র্ক টাইমজোন দিয়ে এটি পরীক্ষা করেছি।
জয়েশ ডি

যতক্ষণ না রবিবার আপনার সপ্তাহের প্রথম দিন না থাকে (সোমবার অস্ট্রেলিয়া / যুক্তরাজ্যে) তবে তা ঠিক থাকবে।
জান্ডার্বার

1

গত সপ্তাহের প্রথম দিনের জন্য এখানে একটি ওলাইনার এবং DateTimeঅবজেক্ট হিসাবে গত সপ্তাহের শেষ দিন ।

$firstDay = (new \DateTime())->modify(sprintf('-%d day', date('w') + 7))
                             ->setTime(0, 0, 0);
$lastDay = (new \DateTime())->modify(sprintf('-%d day', date('w') + 1))
                            ->setTime(23, 59, 59);

1
$string_date = '2019-07-31';
echo $day_of_week = date('N', strtotime($string_date));
echo $week_first_day = date('Y-m-d', strtotime($string_date . " - " . ($day_of_week - 1) . " days"));
echo $week_last_day = date('Y-m-d', strtotime($string_date . " + " . (7 - $day_of_week) . " days"));

সপ্তাহের প্রথম দিন (সোমবার) হিসাবে সোমবার হলে কার্যকর হয় when
কামরান মোশতাক

0

আমি এই প্রশ্নের বিরুদ্ধে কয়েকবার এসেছি এবং সর্বদা অবাক করে দিয়েছি যে তারিখের কার্যগুলি এটিকে সহজ বা পরিষ্কার করে না। DateTimeক্লাস ব্যবহার করে এমন পিএইচপি 5 এর জন্য আমার সমাধানটি এখানে রয়েছে :

/**
 * @param DateTime $date A given date
 * @param int $firstDay 0-6, Sun-Sat respectively
 * @return DateTime
 */
function getFirstDayOfWeek(DateTime $date, $firstDay = 0) {
    $offset = 7 - $firstDay;
    $ret = clone $date;
    $ret->modify(-(($date->format('w') + $offset) % 7) . 'days');
    return $ret;
}

আসল তারিখের পরিবর্তন এড়াতে ক্লোন করা প্রয়োজন।


0

কি সম্পর্কে:

$date = "2013-03-18"; 
$searchRow = date("d.m.Y", strtotime('last monday',strtotime($date." + 1 day")));
echo "for date " .$date ." we get this monday: " ;echo $searchRow; echo '<br>';

এটি সর্বোত্তম উপায় নয় তবে আমি পরীক্ষা করেছি এবং যদি আমি এই সপ্তাহে থাকি তবে আমি সঠিক সোমবার পাই, এবং যদি আমি সোমবারে থাকি তবে আমি সেই সোমবার পাব।

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