2008-08-12 17 views
6

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

उदाहरण:

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

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

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

उत्तर

5

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

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

उदाहरण

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

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

कृपया ध्यान दें कि आप यह सुनिश्चित करना की जाँच करनी चाहिए कि

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

+0

अच्छा जवाब लेकिन उद्धरण $ _GET मत भूलना [ 'तारीख'] – Tech4Wilco

1

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

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

आप समारोह परिभाषा strtotime के यहाँ में देख सकते हैं, दूसरा तर्क, अब है यानी आप तारीख, जिस से यह सापेक्ष है बदल सकते हैं।

यह पिछले 10 "कल" ​​का उपयोग कर पहले तर्क के रूप में दिन के माध्यम से एक त्वरित पाश

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

$time = time(); 

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

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

0

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

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)."<br />"; 

//use given date to show day before 
$yesterday=strtotime('-1 day',$date); 
echo "Day Before: ".date('m/d/Y',$yesterday)."<br />"; 

//same for next day 
$tomorrow=strtotime('+1 day',$date); 
echo "Next Day: ".date('m/d/Y',$tomorrow)."<br />"; 
$lastmonday=strtotime('last monday, 1 week ago',$date); 
echo "Last Moday: ".date('D m/d/Y',$lastmonday)."<br />"; 

//form 
echo "<form method=\"get\" action=\"{$_SERVER['PHP_SELF']}\">"; 

//link to subtract a day 
echo "<a href=\"newtimetravel.php?given=".date('m/d/Y',$yesterday)."\"><< </a>"; 

//show current day 
echo "<input type=\"text\" name=\"given\" value=\"$givendate\">"; 

//link to add a day 
echo "<a href=\"newtimetravel.php?given=".date('m/d/Y',$tomorrow)."\"> >></a><br />"; 

//submit manually entered day 
echo "<input type=\"submit\" name=\"changetime\" value=\"Set Current Date\">"; 

//close form 
echo "<form><br />"; 
?> 

"< <" पर क्लिक करके और ">>" विकास और सवाल

संबंधित मुद्दे