PHP का उपयोग करने की तारीख से सप्ताह के दिन की तारीख कैसे पता करें?


85

यदि मुझे मिल गया है $date YYYY-mm-ddऔर $dayउस सप्ताह के 6 (शनिवार) को एक विशिष्ट (0 (रविवार) द्वारा निर्दिष्ट) प्राप्त करना चाहते हैं YYYY-mm-dd

उदाहरण के लिए, यदि मुझे मिल गया 2012-10-11के रूप में $dateऔर 5के रूप में $day, मैं प्राप्त करना चाहते हैं 2012-10-12, अगर मैं मिल गया है 0के रूप में $day,2012-10-14

EDIT: आपमें से
अधिकांश ने इसे गलत समझा। मुझे कुछ तारीख मिली, $dateऔर उसी सप्ताह के 0-6 तक एक दिन निर्दिष्ट करना चाहते हैं $date

तो नहीं, मैं नहीं चाहता कि दिन $date...


आपका सप्ताह कब शुरू होता है? सोमवार या रविवार? मुझे पता है कि यह ज्यादातर लोगों के लिए सोमवार है, लेकिन मैं सिर्फ यह सुनिश्चित कर रहा हूं: पी
कीसर

3
मुझे नहीं लगता कि जिन लोगों ने जवाब दिया, वे सवाल को ठीक से समझ गए। वह तिथि के अनुसार दिन का एक नंबर प्राप्त नहीं करना चाहता है (जो दिनांक ('w') होगा), लेकिन वह तारीख और दिन की संख्या निर्दिष्ट करना चाहता है और उसी सप्ताह से उसी तारीख को प्राप्त करता है जैसे कि निर्दिष्ट तिथि है ।। ।
वाफलीक

जवाबों:


127

मुझे लगता है कि आप यही चाहते हैं।

$dayofweek = date('w', strtotime($date));
$result    = date('Y-m-d', strtotime(($day - $dayofweek).' day', strtotime($date)));

86

आप दिनांक () फ़ंक्शन का उपयोग कर सकते हैं:

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

2
अच्छा तरीका, लेकिन जैसा कि आप Rezigned के जवाब में देख सकते हैं, आप '1 दिन' का भी उपयोग कर सकते हैं, जिससे $ दिन बेकार हो जाएंगे।
ज़ुल्किस

1
यह अधिक सही लगता है क्योंकि यह सही तिथि देता है 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

PHP मैनुअल ने कहा:

डब्ल्यू सप्ताह के दिन का संख्यात्मक प्रतिनिधित्व

इसलिए आप mktime के साथ एक तारीख का निर्माण कर सकते हैं, और इसमें उपयोग कर सकते हैं 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')

1
आपके दृष्टिकोण के लिए धन्यवाद, लेकिन नहीं, मुझे इसे मैन्युअल रूप से करने की आवश्यकता नहीं है। एक नज़र रिजेक्टेड के जवाब पर।
ज़ुल्किस

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

सरल, यह चाल करना चाहिए

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