दिलचस्प पोस्ट
PhantomJS के साथ एक पृष्ठ का हिस्सा कैसे प्रस्तुत करना है? क्या जावास्क्रिप्ट / jQuery में HTML तत्व ऑब्जेक्ट क्लोन करना संभव है? वैरायडिक टेम्पलेट्स के साथ विस्तार एंड्रॉइड दो उंगली रोटेशन पायथन में त्वरित और आसान फ़ाइल संवाद? क्या SQL सर्वर संकुचित दृश्य स्टूडियो 2013 से बंद है? ArrayList और पार्सलेबल गतिविधि को पार करने में सहायता एक स्ट्रिंग को एक सरणी में कनवर्ट करें jqGrid डेटायूआरएल ड्रॉपडाउन सूची ताज़ा नहीं है पांडा resample प्रलेखन रेट्रोफ़िट का उपयोग करते हुए जीएसओएन के साथ नेस्टेड जेएसएएन ऑब्जेक्ट प्राप्त करें runOnUiThread का उपयोग कैसे करें क्यों दिनांक का समय है। AddHours काम करने के लिए प्रतीत नहीं होता है? मैं पृष्ठ के पूर्ण यूआरएल को कैसे प्राप्त करूं, जिसमें मैं सी # पर हूँ अपाचे उन्हें प्रदर्शित करने के बजाय php फ़ाइलों को डाउनलोड कर रहा है

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

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

वेब के समाधान से एकत्रित समाधान "PHP में सप्ताह के पहले दिन प्राप्त करें?"

यहाँ मैं क्या कर रहा हूँ …

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

$ दिन सप्ताह के दिन (रविवार = 0, सोमवार = 1, आदि) का प्रतिनिधित्व करते हुए 0 से 6 में से एक संख्या शामिल है।
$ सप्ताह_स्टार्ट में वर्तमान सप्ताह के रविवार को mm-dd-yyyy के रूप में दिनांक है
$ सप्ताह_एंड में वर्तमान सप्ताह के शनिवार के लिए मिमी-डीडी- याय के रूप में तारीख होती है

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

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

strtotime फ़ंक्शन का उपयोग करने के लिए बहुत सरल:

 echo date("Ymd", strtotime('monday this week')), "\n"; echo date("Ymd", strtotime('sunday this week')), "\n"; 

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

5.3.0 के लिए आउटपुट – 5.6.6, पीपी 7 @ 20140507 – 20150301, एचएचवीएम-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("Ymd", strtotime('monday this week', strtotime($date))), "\n"; echo date("Ymd", strtotime('sunday this week', strtotime($date))), "\n"; $date = '2015-03-22'; // sunday echo date("Ymd", strtotime('monday this week', strtotime($date))), "\n"; echo date("Ymd", strtotime('sunday this week', strtotime($date))), "\n"; 

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

5.3.0 के लिए आउटपुट – 5.6.6, पीपी 7 @ 20140507 – 20150301, एचएचवीएम-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 

इसे सरल रखें :

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

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

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

यह आपको दिए गए तिथि के सप्ताह के दिन देता है जहां 0 = रविवार और 6 = शनिवार वहां से आप बस उस दिन की गणना कर सकते हैं, जिस दिन आप चाहते हैं।

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

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

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

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

निम्नलिखित कोड किसी भी कस्टम दिनांक के साथ काम करना चाहिए, बस वांछित दिनांक प्रारूप का उपयोग करता है।

 $custom_date = strtotime( date('dm-Y', strtotime('31-07-2012')) ); $week_start = date('dm-Y', strtotime('this week last monday', $custom_date)); $week_end = date('dm-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 

इस प्रश्न को एक अच्छा दिनांक समय उत्तर की आवश्यकता है: –

 function firstDayOfWeek($date) { $day = DateTime::createFromFormat('md-Y', $date); $day->setISODate((int)$day->format('o'), (int)$day->format('W'), 1); return $day->format('md-Y'); } var_dump(firstDayOfWeek('06-13-2013')); 

आउटपुट: –

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

यह साल की सीमाओं और छलांग वर्ष के साथ सौदा होगा।

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

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

यहां सप्ताह के अंतिम दिन रविवार और शनिवार के रूप में मैं रविवार को विचार कर रहा हूं।

 $m = strtotime('06-08-2012'); $today = date('l', $m); $custom_date = strtotime( date('dm-Y', $m) ); if ($today == 'Sunday') { $week_start = date("dmY", $m); } else { $week_start = date('dm-Y', strtotime('this week last sunday', $custom_date)); } if ($today == 'Saturday') { $week_end = date("dmY", $m); } else { $week_end = date('dm-Y', strtotime('this week next saturday', $custom_date)); } echo '<br>Start: '. $week_start; echo '<br>End: '. $week_end; 

आउटपुट:

प्रारंभ: 05-08-2012
समाप्ति: 11-08-2012

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

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

यह वही है जो मैं किसी भी तारीख से सप्ताह के पहले और अंतिम दिन प्राप्त करने के लिए उपयोग कर रहा हूं। इस मामले में, सोमवार सप्ताह का पहला दिन है …

 $date = date('Ym-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'); 

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

 echo date("Mdy", strtotime('last monday', strtotime('next week', time()))); 

इसे इस्तेमाल करे:

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

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

यह मैंने पाया सबसे कम और सबसे पठनीय समाधान है:

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

strtotime new DateTime()->getTimestamp() से अधिक तेज है new DateTime()->getTimestamp()

दिए गए दिनांक के सप्ताह का पहला संस्करण आपको PHP के पहले संस्करण को देखते हुए (इस मामले में – रविवार, 2013-02-03):

 <?php function startOfWeek($aDate){ $d=strtotime($aDate); return strtotime(date('Ym-d',$d).' - '.date("w",$d).' days'); } echo(date('Ym-d',startOfWeek("2013-02-07")).' '); ?> 
 $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")); 
 $monday = date('dm-Y',strtotime('last monday',strtotime('next monday',strtotime($date)))); 

आपको अगले सोमवार को पहले तो अगले सोमवार की 'आखिरी सोमवार' मिलना होगा। इसलिए यदि दी गई तिथि सोमवार है तो वह उसी तारीख को वापस नहीं होगी, पिछले सप्ताह सोमवार।

यदि आप सोमवार को अपने सप्ताह की शुरुआत के रूप में चाहते हैं, तो ऐसा करें:

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

आप strptime() का उपयोग करके दिनांक को पार्स करते हैं और परिणाम पर date() उपयोग करते हैं:

 date('N', strptime('%m-%d-%g', $dateString)); 
 <?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('md-Y', $today_or_previous_sunday); ?> 

(नोट: प्रश्न में एम.एम., डीडी और य्याय मानक पीएचपी दिनांक स्वरूप सिंटैक्स नहीं हैं – मुझे यकीन नहीं हो सकता कि इसका क्या मतलब है, इसलिए मैंने आईएसओ साल-महीना के साथ $ start_date सेट किया है)

ऐसा करने का एक अन्य तरीका ….

 $year = '2014'; $month = '02'; $day = '26'; $date = DateTime::createFromFormat('Ymd 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 Ymd H:i:s'); 

वर्तमान सप्ताह का पहला दिन (सोमवार) प्राप्त करने का सबसे आसान तरीका यह है:

 strtotime("next Monday") - 604800; 

जहां 604800 – 1 सप्ताह में सेकंड की गणना (60 * 60 * 24 * 7) है।

यह कोड अगले सोमवार को मिलता है और 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")); 

ऐसा करने का एक शानदार तरीका है कि 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 लिए एक पैरामीटर के रूप में पास करें 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 

मैं इस प्रश्न के खिलाफ कई बार आया हूं और हमेशा सदन को आश्चर्यचकित करता हूं कि यह कार्य आसान या स्पष्ट नहीं करता है। यहां 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; } 

मूल तिथि को बदलने से बचने के लिए आवश्यक क्लोन

व्हाट अबाउट:

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

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

मैंने यह समाधान उपयोगी पाया बस घटाएं अगर पिछले सोमवार को सोमवार को नहीं मिलता है। मैं $ lower_date को एक क्वेरी से खींचने की तिथि के रूप में उपयोग कर रहा हूं, जिससे मुझे पिछले सोमवार के साथ सामंजस्य करना होगा

 //set this up to go backwards until you find monday while(date('D',strtotime($lower_date))!='Mon'){ $lower_date = date('Ym-d', strtotime($lower_date . ' - 1 day')); //increase the upper spec } 

यह आज के लिए तैयार है आज सोमवार है

 function lastMonday(\DateTime $date) { $timestamp = $date->getTimestamp(); $monday = ( 1 == date( 'N', $timestamp )); if ($monday) { return $timestamp; } else { return strtotime( 'last monday', $timestamp ); } } 

यदि आप चाहते हैं कि उसे टाइमटाइम के बजाय टाइमस्टैम्प प्राप्त करने के लिए पहले दो पंक्तियाँ (तिथि से छुटकारा-> टकटमस्टैम्प) उन्हें बस इसे बदल दें

 function lastMonday($timestamp) { 

और यदि आप इसे इनपुट स्ट्रिंग में बदलना चाहते हैं तो यह पहले दो पंक्तियाँ

 function lastMonday($dateString) { $timestamp = strtotime($dateString); 

मैं इस तरह के समाधान के लिए खोज रहा था और अंत में कुछ ऐसा हुआ जो वर्तमान सप्ताह के प्रत्येक दिन वापस आएगा।

 //set current timestamp $today = time(); //calculate the number of days since Monday $dow = date('w', $today); $offset = $dow - 1; if ($offset < 0) { $offset = 6; } //calculate timestamp for Monday and Sunday $monday = $today - ($offset * 86400); $tuesday = $monday + (1 * 86400); $wednesday = $monday + (2 * 86400); $thursday = $monday + (3 * 86400); $friday = $monday + (4 * 86400); $saturday = $monday + (5 * 86400); $sunday = $monday + (6 * 86400); //print dates for Monday and Sunday in the current week print date("Ymd", $monday) . "\n"; print date("Ymd", $tuesday) . "\n"; print date("Ymd", $wednesday) . "\n"; print date("Ymd", $thursday) . "\n"; print date("Ymd", $friday) . "\n"; print date("Ymd", $saturday) . "\n"; print date("Ymd", $sunday) . "\n"; 

आपको धन्यवाद कि ये यहां पोस्ट किया है: http://www.redips.net/php/week-list-current-date/#comments