Strtotime () का उपयोग कर सापेक्ष तिथियों के माध्यम से आगे बढ़ना

मैं strtotime() का उपयोग करने के लिए एक बटन का जवाब देने के लिए पिछले क्लिक पर उन्नत दिन के सापेक्ष -1 और +1 दिन (दो बटन) पर क्लिक करने का प्रयास कर रहा हूं।

Example:

  • यह महीने का 10 वां है, मैं "-1 दिन" बटन पर क्लिक करता हूं, और अब दिनांक 9वीं के रूप में पढ़ता है।
  • मैं फिर से "-1 दिन" बटन पर क्लिक करता हूं और अब रीडआउट 8 वें दिन बताता है।
  • मैं "+1 दिन" बटन पर क्लिक करता हूं और अब रीडआउट कहता है कि यह 9वीं है।

मैं बटन को समझता हूं और तिथि प्रदर्शित करता हूं, और जानकारी पास करने के लिए $ _ GET और PHP का उपयोग करता हूं, लेकिन मुझे strtotime() को सापेक्ष दिनांक पर काम करने के लिए कैसे मिलता है पिछली बार समय यात्रा स्क्रिप्ट बुलाया गया था?

अब तक मेरे काम ने मुझे कल और आज अब के सापेक्ष दिखाया है, लेकिन उदाहरण के लिए, कल से पहले , या कल के बाद का दिन । या यदि मैं अपने "अंतिम सोमवार" बटन का उपयोग करता हूं, तो उस दिन से पहले या उसके बाद का दिन।

0
ro fr bn

3 उत्तर

प्रेरणा के एक पल के बाद, मेरे प्रश्न का समाधान मेरे लिए स्पष्ट हो गया (मैं अपनी बाइक की सवारी कर रहा था)। का '$ अब' हिस्सा

strtottime( string $time {,int $now ]) 

वर्तमान तारीख के रूप में सेट करने की जरूरत है। नहीं "$ time() - अब", लेकिन "जिस तारीख से मैं चिंतित हूं/मैं इसके लिए लॉग इन कर रहा हूं।

यानी: अगर मैं 8/10/2008 के लिए टाइम्सशीट सारांश देख रहा हूं, तो यह स्ट्रेटोटाइम() के अनुसार "अब" है; कल 8/09 है और कल 8/11 है। एक बार जब मैं एक दिन रेंगता हूं, तो "अब" 8/11 है, कल 8/10 है, और कल 8/12 है।

कोड उदाहरण यहां दिया गया है:

<?php

//catch variable
$givendate=$_GET['given'];

//convert given date to unix timestamp
$date=strtotime($givendate);
echo "Date Set As...: ".date('m/d/Y',$date)."
"; //use given date to show day before $yesterday=strtotime('-1 day',$date); echo "Day Before: ".date('m/d/Y',$yesterday)."
"; //same for next day $tomorrow=strtotime('+1 day',$date); echo "Next Day: ".date('m/d/Y',$tomorrow)."
"; $lastmonday=strtotime('last monday, 1 week ago',$date); echo "Last Moday: ".date('D m/d/Y',$lastmonday)."
"; //form echo "<form method=\"get\" action=\"{$_SERVER['PHP_SELF']}\">"; //link to subtract a day echo "<< "; //show current day echo "<input type=\"text\" name=\"given\" value=\"$givendate\">"; //link to add a day echo " >>
"; //submit manually entered day echo "<input type=\"submit\" name=\"changetime\" value=\"Set Current Date\">"; //close form echo "<form>
"; ?>

Clicking on the "<<" and ">>" advances and retreats the day in question

0
जोड़ा

केविन, आप एक ठोस पूर्ण आधार (यानी एक तिथि/समय), एक सापेक्ष समय अवधि नहीं काम करते हैं। फिर आप सापेक्ष समय अवधि में परिवर्तित हो जाते हैं। इसलिए, उदाहरण के लिए, डिफ़ॉल्ट रूप से, यदि आप कैलेंडर दिखा रहे थे, तो आप आज की तारीख से काम करेंगे।

int strtotime  ( string $time  [, int $now  ] )

आप स्ट्रेटोटाइम की फ़ंक्शन परिभाषा में देख सकते हैं, दूसरा तर्क अब है, यानी आप उस तारीख को बदल सकते हैं, जिससे वह सापेक्ष है।

त्वरित लूप के माध्यम से प्रदर्शित करना आसान हो सकता है

यह पहली तर्क के रूप में "कल" ​​का उपयोग कर पिछले 10 दिनों के माध्यम से लूप होगा। फिर हम इसे प्रिंट करने के लिए तारीख का उपयोग करते हैं।

$time = time();

for ($i = 0; $i < 10; $i++) {
    $time = strtotime("yesterday", $time);
    print date("r", $time) . "\n";
}

तो यूआरआई के माध्यम से समय/तिथि पास करें ताकि आप सापेक्ष तारीख को बचा सकें।

0
जोड़ा

पिछली कॉल से उसी स्क्रिप्ट पर काम करना इस प्रकार की चीज़ के लिए वास्तव में एक अच्छा विचार नहीं है।

आप जो करना चाहते हैं वह हमेशा आपकी स्क्रिप्ट, तिथि और आंदोलन में दो मानों को पास करता है। (नीचे दिया गया उदाहरण सरलीकृत है ताकि आप केवल तारीख को पास कर सकें, और यह हमेशा एक दिन जोड़ देगा)

उदाहरण

http://www.site.com/addOneDay.php?date=1999 -12-31

<?php
   echo Date("Y-m-d",(strtoTime($_GET[date])+86400));
?>

कृपया ध्यान दें कि आपको यह सुनिश्चित करने के लिए जांच करनी चाहिए कि जारीकर्ता ($ _ GET [date]) पहले भी हो

यदि आप वास्तव में पिछले कॉल से उसी स्क्रिप्ट पर काम करना चाहते हैं, तो आपको इसे सत्रों के साथ करना होगा, इसलिए कृपया यह निर्दिष्ट करें कि क्या यह मामला है।

0
जोड़ा
अच्छा जवाब है लेकिन कोट्स $ _GET ['date'] को मत भूलना
जोड़ा लेखक Tech4Wilco, स्रोत