से और बाद में बदलावों को ध्यान में रखता है, मैं एक कॉन्फ़्रेंस रूम बुकिंग कैलेंडर डिबग कर रहा हूं जिसे किसी ऐसे व्यक्ति द्वारा रखा गया था जो अब मेरे साथ काम नहीं कर रहा है। यह एक दुःस्वप्न रहा है क्योंकि इसमें बहुत सी चीजें गलत थीं, लेकिन मुझे यह पता लगाने में परेशानी हो रही है कि आखिरी बग क्या हो रहा है। कैलेंडर यह देखने के लिए जांच करता है कि कमरे निश्चित रूप से कुछ समय पहले बुक किए जा चुके हैं और उन्हें सही समय पर बुक के रूप में कोई समस्या नहीं दिख रही है, लेकिन यदि कोई कमरा कमरे के खाली होने के बाद एक घंटे या उससे कम कमरे बुक करने का प्रयास करता है डीएसटी में या उससे स्थानांतरित करें, यह कमरे को अभी भी बुक के रूप में दिखाता है। उदाहरण:कोड में फ़ंक्शन मैं डीबगिंग कर रहा हूं, डीएसटी
- उपयोगकर्ता देखता है कि कमरा 2 9 नवंबर से 9 पूर्वाह्न 10 बजे तक आरक्षित है।
- उपयोगकर्ता 2 9 नवंबर को अपराह्न 10:30 पूर्वाह्न 12:00 बजे कमरे बुक करने का प्रयास करता है।
- कैलेंडर इस दूसरे अनुरोध को रद्द करता है और उपयोगकर्ता को सूचित करता है कि कमरा पहले ही बुक हो चुका है।
यह ध्यान दिया जाना चाहिए कि यह डीएसटी (4 नवंबर) में बदलाव से पहले कभी भी नहीं होता है। यहाँ समारोह जो अगर कमरे उपलब्ध है निर्धारित करता है:
function calCheck($starttime, $endtime, $cal_name, $cat_id, $myDB, $myHost, $myUser, $myPass) {
$timezone = 'America/Denver';
date_default_timezone_set ($timezone);
$dset = new DateTime($odate, new DateTimeZone($timezone));
$dset2 = $dset->getOffset();
//$starttime = $starttime + 1;
//$endtime = $endtime - 1;
$starttime = $starttime - $dset2 + 1;
$endtime = $endtime - $dset2 - 1;
$starttime = $starttime;
$endtime = $endtime;
//echo $starttime .'</br>'. $endtime . '</br>';
$db = new myDB($myDB, $myHost, $myUser, $myPass);
$db->myDB_Connect();
//echo 'calcheck</br>';
$ck_query = 'SELECT * FROM vw_cal_chk
WHERE (stime < '. $starttime . ' AND etime > ' . $starttime . ') and Calendar = "' . $cal_name . '" and cat_id = "' .$cat_id . '"
OR (stime < ' . $endtime . ' AND etime > ' . $endtime . ') and Calendar = "' . $cal_name . '" and cat_id = "' .$cat_id . '"
OR (stime >= '. $starttime . ' AND etime < ' . $endtime .') and Calendar = "' . $cal_name . '" and cat_id = "' .$cat_id . '"';
$ck_result = $db->myQuery($ck_query);
$num = mysql_num_rows($ck_result);
//echo $ck_query . '</br>' . $num;
if ($num >> 0){
$avail = 1;
} else {
$avail = 0;
}
return $avail;
}
मेरी टाइम स्टाम्प्स के सभी इस बात पर निर्भर UTC में हैं और मैं $odate
चर वास्तव में कहीं भी कभी नहीं instantiated है नोटिस, लेकिन मैं निर्धारित करने में सक्षम नहीं किया गया है ऑफसेटिंग सही ढंग से काम करने के लिए इसे पास करने के लिए क्या मूल्य है। अगर मैं यह जान सकता हूं कि यह किस तरह की तारीख चाहता है, तो मुझे बाकी काम करने में सक्षम होना चाहिए।
मुझे लगता है कि $ odate अनसेट है, जिसका मतलब है कि डेटटाइम को कॉल शून्य हो गया है, जिसे मुझे संदेह है (अगर यह बिल्कुल काम करता है) को डिफ़ॉल्ट 'अब' के रूप में संसाधित किया जाना चाहिए। आप दिनांक ('मैं') का उपयोग कर डीएसटी के लिए परीक्षण कर सकते हैं और फिर तदनुसार अपने ऑफसेट को ऑफसेट कर सकते हैं। – Gavin
क्या आपने अपने सर्वर पर सभी चेतावनियों को सक्षम करने का प्रयास किया है? यानी त्रुटि_ रिपोर्टिंग (-1); ini_set ('display_errors', 'चालू'); ' –