2010-06-02 9 views
10

में सोमवार की तारीख प्राप्त करें मुझे वर्तमान सप्ताह में सोमवार की तारीख को खोजने की आवश्यकता है। मैं इसे PHP 4 में कैसे कर सकता हूं?वर्तमान सप्ताह में PHP 4

+1

मैं वास्तव में लगता है कि आप PHP4 में काम करने के लिए, * क्योंकि PHP5 की तारीख कार्यक्षमता है waaaay होने के लिए * बेहतर।इसके अलावा PHP4 आधिकारिक तौर पर कुछ समय के लिए एंड-ऑफ-लाइफ रहा है, इसलिए इसे और अधिक पैच नहीं मिलेगा और यह शायद असुरक्षित है - यह किसी भी तरह से उत्पादन के उपयोग में नहीं होना चाहिए। – Spudley

उत्तर

6
echo date('Y-m-d', strtotime('previous monday')); 

हालांकि, केवल एक नोट। आप यह सुनिश्चित करना चाहते हैं कि आज सोमवार नहीं है, अन्यथा आपको पिछली सोमवार की तारीख मिल जाएगी, जैसा कि यह कहता है। के रूप में

if (date('w') == 1) 
{ 
    // today is monday 
} 
else 
{ 
    // find last monday 
} 
+0

यदि आज सोमवार है तो यह एक सप्ताह पहले की तारीख देता है। – nickf

+0

@nickf: अद्यतन उत्तर देखें। मुझे याद आया कि मैंने पोस्ट करने के बाद .. :) –

+1

स्ट्रेटोटाइम के साथ उपयोग की जाने वाली शब्दावली से सावधान रहें, 'पिछले सोमवार' आपको सोमवार को एक सप्ताह पहले मिल जाएगा, जब आप वास्तव में वर्तमान दिन चाहते हैं। आईआईआरसी, इस हफ्ते php में सोमवार के माध्यम से सोमवार का मतलब है, लेकिन यदि आप मंगलवार की तारीख को खोजने के लिए अपना उत्तर लागू करना चाहते थे तो यह आपको सोमवार और मंगलवार को गलत परिणाम देगा। –

9
echo date('Y-m-d',time()+(1 - date('w'))*24*3600); 

इस प्रकार अगले सप्ताह के लिए आप इसे कर सकता है:

echo date('Y-m-d',time()+(8 - date('w'))*24*3600); 

1 सोमवार के लिए, 2 मंगलवार, 3 बुधवार और इतने पर। आजमाइश कीजिये।

+0

1 सोमवार, 2 tuesday, 3 wednesday और इतने पर :) :) कोशिश करें .. – apis17

+0

यह एक और मान्य है – r4ccoon

+2

वैसे यह पिछले सोमवार को नहीं देता है अगर आप रविवार को इस कोड को आजमाते हैं! – ErcanE

0

मेरे प्रयास:

<?php 
$weekday = date("w") - 1; 
if ($weekday < 0) 
{ 
    $weekday += 7; 
} 
echo "Monday this week : ", date("Y-m-d",time() - $weekday * 86400) , "\n"; 
?> 
12

इस प्रयास करें:

return strtotime('last monday', strtotime('next sunday')); 
+0

और अगर आज रविवार है तो क्या होगा? :) –

+0

@ mr.b - तो इसे अभी भी वांछित के रूप में कार्य करना चाहिए (माना जाता है कि रविवार सप्ताह की शुरुआत है) – nickf

+0

सोमवार 00:00:00 बजे यह मेरा पसंदीदा समाधान है। इसे पाने के लिए एक और (कम सुरुचिपूर्ण) तरीका 'एमकेटाइम (0,0,0, दिनांक (' एम '), दिनांक (' जे ') - तिथि (' एन ') + 1, तिथि (' वाई ')) ' – neokio

2

इस प्रयास करें।

echo date('Y-m-d', strtotime('last monday', strtotime('next monday'))); 

अगर आज सोमवार है तो यह वर्तमान तारीख वापस आ जाएगा, और अन्य सोमवार को वापस आ जाएगा। कम से कम यह मेरे PHP 5.2.4 पर en_US लोकेल के तहत करता है।

3

$thisMonday = date('l, F d, Y', time() - ((date('w')-1) * 86400));

संपादित करें: स्पष्टीकरण

  • date('w') सप्ताह के दिन (0 = रविवार, 6 = शनिवार) के एक संख्यात्मक प्रस्तुति है
  • एक दिन में 86400 सेकंड हैं
  • हम वर्तमान समय लेते हैं, और घटाते हैं (एक दिन * (सप्ताह का दिन - 1))

तो, अगर यह वर्तमान में बुधवार (दिन 3) है, अर्थात सोमवार दो दिन पहले है:

time() - (86400 * (3 - 1)) = time() - 86400 * 2

यदि यह सोमवार है (दिन 1), हम पाते हैं:

time() - (86400 * (1 - 1)) = time() - 86400 * 0 = time()

यदि यह रविवार (दिन 0) है, तो सोमवार कल है।

time() - (86400 * (0 - 1)) = time() - -86400 = time() + 86400

70

सबसे आसान तरीका है जिस तरह से:

$time = strtotime('monday this week'); 
+4

हां! जब वे [कहते हैं] (http://php.net/manual/en/function.strtotime.php) "यूनिक्स टाइमस्टैम्प में किसी भी अंग्रेजी पाठ डेटाटाइम विवरण के बारे में पार्स", वे वास्तव में इसका मतलब है, है ना? अधिकांश पठनीय समाधान के लिए +1। –

+0

+1! वास्तव में आसान समाधान। खुशी है कि मैंने इसकी खोज की, क्योंकि मैं सोमवार की तारीख निर्धारित करने के लिए पहले से ही कुछ विस्तृत निर्माण कर रहा था। हालांकि Typo: 'strotime' 'strtotime' होना चाहिए। – Alec

+1

आज गुरुवार 2012/05/17 (वाई-एम-डी) है, जब मैं गूंज करता हूं (दिनांक ('वाई-एम-डी', स्ट्रेटोटाइम ('इस सप्ताह सोमवार')); यह 2012/05/21 जाता है जो अगले सप्ताह सोमवार – r4ccoon

1

प्रयास करें इस

$day_of_week = date("N") - 1; 
$monday_time = strtotime("-$day_of_week days"); 
संबंधित मुद्दे