PHP में सप्ताह का पहला दिन प्राप्त करें?


124

दिनांक MM-dd-yyyyप्रारूप को देखते हुए , क्या कोई मुझे सप्ताह का पहला दिन प्राप्त करने में मदद कर सकता है?


4
सप्ताह के पहले दिन से क्या मतलब है? क्या आपका मतलब सूर्य, सोम से है? या आप सप्ताह के पहले दिन की तारीख से मतलब रखते हैं?
जेफरी हाइन्स

2
सप्ताह का पहला दिन स्थिर है: यह सोमवार (या संभवतः रविवार) है। क्या आपका मतलब है कि आप दी गई मनमानी तारीख से पहले सोमवार की तारीख प्राप्त करना चाहते हैं?
जॉन क्रैम

PHP का क्या संस्करण - 4 या 5?
जॉन क्रैम 13:09

सप्ताह के रविवार की तारीख। php 5
Iggy Ma

अजीब बात है, वह एक 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 तक की संख्या होती है।
$ सप्ताह_स्टार्ट में mm-dd-yyyy के रूप में वर्तमान सप्ताह के रविवार की तारीख शामिल है।
$ सप्ताह_एंड में वर्तमान सप्ताह के शनिवार की तारीख मिमी-डीडी-य्यी है।


1
लेकिन, इसका अर्थ है 'इस सप्ताह' की शुरुआत और अंत, सही?
ओकी एरी रिनाल्डी

यदि सप्ताह का नंबर दिया जाए तो क्या होगा? और मैं चाहता हूं कि यह उस सप्ताह की शुरुआत और अंतिम तिथि लौटाए।
ओकी एरी रिनाल्डी

1
@OkiErieRinaldi आपको उचित ध्यान प्राप्त करने के लिए संभवतः एक नया प्रश्न खोलना चाहिए।
जेडकेकोर

चिंता मत करो, मैं इसे @JakedCore मिला!
ओकी एरी रिनाल्डी

मुझे यकीन नहीं है कि अन्य एक क्यों अधिक है। यह काम नहीं करता है, लेकिन यह एक करता है!3v4l.org/q6kKY
जेसन

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

समय बदलें ()। जब अगले दिन रविवार / सोमवार होता है तो अगला रविवार / अंतिम सोमवार के तरीके काम नहीं करेंगे।


55
$monday = strtotime('last monday', strtotime('tomorrow'));
लुईस बकले

this weekकाम करने की जरूरत नहीं है अगर आप हमेशा पिछले सप्ताह की शुरुआत है, लेकिन @ लुईसबक्ले की टिप्पणी यह ​​करता है।
स्मर

time()यदि आप आज निर्दिष्ट करना चाहते हैं तो दूसरा तर्क विकल्प है।
इफनो

मेरे लिए काम नहीं किया, मुझे YTD, MTD, WTD के लिए थोड़ा अलग वाक्यविन्यास करना पड़ा।
रॉन

6
यह उत्तर असंगत परिणाम उत्पन्न करता है, जो इस्तेमाल किए गए PHP संस्करण पर निर्भर करता है: 3v4l.org/Z3k4E @ LewisBuckley का समाधान सभी संस्करणों के लिए सुसंगत है: 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";

यह PHP संस्करणों में थोड़ा भिन्न है :

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";

यह थोड़ा अलग है PHP संस्करणों में :

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
इसके लिए धन्यवाद, मैंने अभी इस कोड को संशोधित किया है इसलिए मैं एक वैकल्पिक दिनांक पैरामीटर $ dt = $ custom_date पास कर सकता हूं? strtotime ($ custom_date): समय (); $ मोन्डे = तिथि ("यमद", स्ट्रटोटाइम ('इस सप्ताह' मांडे, $ डीटी)); $ रविवार = तारीख ("यमद", स्ट्रेटोटाइम ('इस सप्ताह का सनडे, $ डीटी));
रॉन माइकल

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');    
?>

स्रोत: PHP मैनुअल

NB: जैसा कि कुछ उपयोगकर्ता ने टिप्पणी की है कि $ dateTime मूल्य संशोधित किया जाएगा।


संपादित करें: टाइपो या कुछ अज्ञात वाक्यविन्यास? कहाँ से आता है? $dateTime = new \DateTime('2012-05-14');
सालीक

2
मैं यह कर रहा हूँ अपने आवेदन के एक संभव autoloaded वस्तु के साथ किसी भी संघर्ष से बचें। वह पूर्ण पथ या सापेक्ष पथ की तरह है।
job3dot5

9
@Panique - "अज्ञात सिंटैक्स" PHP 5.3 का नेमस्पेस सिंटैक्स है। नेमस्पेसिंग आपको एक नामस्थान के साथ एक वर्ग को उपसर्ग करने की अनुमति देता है जिसके बाद एक बैकस्लैश होता है। यहां वह मूल DateTimeवर्ग को निर्दिष्ट करने के लिए एक नाम स्थान के बिना इसका उपयोग कर रहा है , जिसका अर्थ है कि कोड तब भी काम करेगा जब आपके पास DateTimeवर्तमान नामस्थान में एक और वर्ग होगा ।
स्पडली

क्या दिन का नाम हमेशा अंग्रेजी में होता है?
Marwelln 17

1
क्लोन हिस्सा सही ढंग से काम नहीं कर रहा है। यदि आपको मूल एक की आवश्यकता है, तो आपको पहले क्लोन बनाना चाहिए और क्लोन पर ऑपरेशन करना चाहिए।
फरीद चालसुमोव

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

यह आपको दी गई तारीख के सप्ताह का दिन देता है जहां 0= रविवार और 6शनिवार होता है। वहाँ से आप बस उस दिन की ओर पीछे की गणना कर सकते हैं जिसे आप चाहते हैं।


6
यह उत्तर देता है कि क्या दी गई तिथि रविवार या सोमवार आदि है, लेकिन, प्रश्नकर्ता ने दिए गए तारीख के सप्ताह के रविवार की तारीख के लिए मूल प्रश्न पर अपनी टिप्पणी में उल्लेख किया है।
रकीब

19

इस प्रश्न के लिए एक अच्छे DateTime उत्तर की आवश्यकता है : -

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

EDIT: नीचे दिया गया लिंक अब PHP के संस्करण पर नहीं चल रहा है। यह PHP 5.6 पर चल रहा है जो strtotime की विश्वसनीयता में सुधार करता है, लेकिन सही नहीं है! तालिका के परिणाम PHP 5.6 से लाइव परिणाम हैं।

संदर्भ के अनुरूप फ्रेम का निर्धारण करते समय, यहां स्ट्रेटोटाइम के विजयी व्यवहार का टूटना है:

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

मूल रूप से केवल ये तार मज़बूती से आपको एक ही तारीख देंगे, चाहे आप सप्ताह के किसी भी दिन हों, जब आप उन्हें कॉल करते हैं:

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

लेख ने उपयोग करने के लिए कुछ विशिष्ट कोड भी दिए: $ start_of_week = strtotime ("अगला सोमवार - 1 सप्ताह)"; // चालू सप्ताह के सोमवार को 00:00:00 पर शुरू होगा "$ end_of_week = strtotime (" अगला सोमवार - 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;

मैंने PHP 5.2.17 परिणामों के साथ कोड का परीक्षण किया:

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

1
यह देखते हुए कि यह हमेशा पिछला सोमवार लौटाएगा, इसलिए यदि $ custom_date सोमवार है, तो यह एक सप्ताह पहले सोमवार की तारीख को लौटाएगा।
पहाड़ी

2
ठीक से काम नहीं करता है, आज रविवार है, परिणाम हैं: प्रारंभ: 09-09-2013 अंत:
22-09-2013

10

सोमवार को सप्ताह का पहला दिन मानते हुए, यह काम करता है:

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

1
"MM-dd-yyyy" "Ymd" के समान नहीं है, कृपया प्रश्न की बारीकियों के लिए अपना उत्तर दर्जी करें।
येवगेनी अफानसेयेव

1
दिनांक ("MM-dd-yyyy") दिनांक: NovNov-0202-15151515 के रूप में आउटपुट करता है। मुझे आशा है कि यह होना चाहिए: दिनांक ("Mdy") जो पठनीय तिथि को आउटपुट करता है जैसे: Nov-02-15
shasi kanth

"MM-dd-yyyy" प्रश्न से आता है। यदि आप निश्चित नहीं हैं कि इसका क्या अर्थ है - इसे टिप्पणी में पूछें। अपना उत्तर संशोधित करने के लिए धन्यवाद।
येवगेनी अफानसेयेव

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


5

इस बारे में कैसा है?

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

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)));

( इस फोरम थ्रेड से )


मुझे उस सभी में सप्ताह संख्या और वर्ष कैसे मिलेगा? मेरे पास MM-dd-yyyy प्रारूप में एक स्ट्रिंग तिथि है
Iggy Ma

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

दिए गए PHP संस्करण पूर्व 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

ऐसा करने का एक स्मार्ट तरीका PHP को टाइमज़ोन अंतर और डेलाइट सेविंग टाइम (डीएसटी) को संभालने देना है। मुझे यह दिखाने के लिए कि यह कैसे करना है।

यह कार्य सोमवार से शुक्रवार तक सभी दिन उत्पन्न होगा, समावेशी (कार्य सप्ताह के दिनों के लिए काम)

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);

?>

(नोट: प्रश्न में MM, dd और yyyy मानक php दिनांक स्वरूप वाक्यविन्यास नहीं हैं - मुझे यकीन नहीं हो सकता है कि इसका क्या मतलब है, इसलिए मैंने $ start_date को ISO वर्ष-माह-दिन के साथ सेट किया है)


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"));

उपयोगी है जब हमारे पास सप्ताह के पहले दिन (सोम-सूर्य) के रूप में सोमवार होता है।
कामरान मुश्ताक

0

मैं कुछ बार इस सवाल के खिलाफ आया हूं और हमेशा आश्चर्यचकित रह जाता हूं कि तारीख के कार्य इस आसान या स्पष्ट नहीं करते हैं। यहां PHP5 के लिए मेरा समाधान है जो DateTimeकक्षा का उपयोग करता है :

/**
 * @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>';

इसका सबसे अच्छा तरीका नहीं है, लेकिन मैंने परीक्षण किया है और अगर मैं इस सप्ताह में हूं तो मुझे सही सोमवार मिल जाएगा, और अगर मैं किसी सोमवार को हूं तो मुझे वह सोमवार मिलेगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.