दिलचस्प पोस्ट
MATLAB में भाग-लंबाई डीकोडिंग प्रणाली ( "थामने"); – यह गलत क्यों है? मैं एक डीजेango टेम्पलेट में मेरे कस्टम टेम्पलेट फ़िल्टर में एकाधिक तर्क कैसे जोड़ूं? AngularJS: सर्वर साइड सत्यापन के साथ एकीकरण पर्ल में अंतर और फ़ंक्शन और फ़ंक्शन () के बीच अंतर आर मानचित्र में पीजीजी या जेपीजी फ़ाइल के रूप में कैसे सहेजना है? जांचें कि स्ट्रिंग में केवल अंक होते हैं नामकरण कक्षाएं – सब कुछ एक "<WhatEver> प्रबंधक" से बचना कैसे करें? @ एस्पेस जे विशिष्ट व्याख्या के साथ एक वर्ग के सभी तरीकों के लिए कमाना Django कुकीज़, मैं उन्हें कैसे सेट कर सकता हूँ? फ़ाइल संवाद चुनें सी में फाइल की सामग्री पाने का सबसे आसान तरीका विंडोज पर strptime () समतुल्य? पायथन में एक स्ट्रिंग रिवर्स करें एफflush (stdin) का उपयोग करना

पूर्ण कैलेंडर में पुनरावर्ती ईवेंट

मैं jQuery फ़ुल कैलेंडर का प्रयोग कर रहा हूं क्योंकि मेरी कैलेंडर उपलब्धता के लिए मेरी वेबसाइट में उपयोगिता एजेंडा है।

क्या कोई फ़ंक्शन / तरीके / पूर्ण कैलेंडर्स में विकल्प हैं जो मेरे आवर्ती ईवेंट को दिन से संभालते हैं? उदाहरण के लिए, सोमवार केवल 7:00 बजे से शाम 9:00 बजे तक, आज सुबह-शाम से शाम 9:00 बजे, ऐसा कुछ है?

वेब के समाधान से एकत्रित समाधान "पूर्ण कैलेंडर में पुनरावर्ती ईवेंट"

साधारण दोहराए जाने वाले कार्यक्रम

यहां सूचीबद्ध उन लोगों के लिए एक सरल विकल्प जोड़ने के लिए, अब Fullcalendar (कुछ हद तक) साप्ताहिक पुनरावर्ती ईवेंट का समर्थन करता है इसलिए यदि आपको केवल कुछ की आवश्यकता है: [Every Monday and Thursday from 10:00am to 02:00pm] , आप निम्न का उपयोग कर सकते हैं:

 events: [{ title:"My repeating event", start: '10:00', // a start time (10am in this example) end: '14:00', // an end time (2pm in this example) dow: [ 1, 4 ] // Repeat monday and thursday }], 

JSFiddle

यह पृष्ठभूमि की घटनाओं में प्रलेखित है लेकिन यह नियमित कार्यक्रमों के लिए भी काम करता है।

इसे डेटाबेस में सहेजना मुश्किल नहीं होगा।

कुछ प्रतिबंध जोड़ें

यदि आप उन्हें असीम रूप से दोहराते नहीं करना चाहते हैं, तो आपको कुछ प्रारंभ और समाप्ति तिथियां जोड़नी होगी।

तो, डीबी में:

  • चलिए ऊपर दिखाए गए घटना को पैरेंट रिकॉर्ड का प्रतिनिधित्व करते हैं
  • प्रारंभ / समाप्ति तिथियों के साथ अन्य तालिकाएं
  • तालिका उदाहरण में शामिल:
 eventId timeStart timeEnd dow dateStart dateEnd 1 10:00 12:00 [1,4] 2015/03/01 2015/04/01 // Month of March 1 10:00 12:00 [1,4] 2015/05/01 2015/06/01 // Month of May 1 10:00 12:00 [1,4] 2016/01/01 2017/01/01 // Year of 2017 

इसे क्लाइंट के पास JSON के रूप में पास करें:

 { id:1, start:"10:00", end:"12:00", dow:[1,4], ranges[{start:"2015/03/01", end:"2015/04/01"}, {start:"2015/05/01", end:"2015/06/01"}, {start:"2016/01/01", end:"2017/01/01"},] } 

और क्लाइंट साइड, फुल कैलेंडर के इवेंटरेन्डर का उपयोग केवल घटनाओं को रेंडर करने के लिए करते हैं जब समय सीमाओं में से एक के भीतर होता है ऐसा कुछ काम करना चाहिए:

 eventRender: function(event){ return (event.ranges.filter(function(range){ // test event against all the ranges return (event.start.isBefore(range.end) && event.end.isAfter(range.start)); }).length)>0; //if it isn't in one of the ranges, don't render it (by returning false) }, 

यह मानते हुए कि आपके ईवेंट संरचित हैं:

 var repeatingEvents = [{ title:"My repeating event", id: 1, start: '10:00', end: '14:00', dow: [ 1, 4 ], ranges: [{ //repeating events are only displayed if they are within at least one of the following ranges. start: moment().startOf('week'), //next two weeks end: moment().endOf('week').add(7,'d'), },{ start: moment('2015-02-01','YYYY-MM-DD'), //all of february end: moment('2015-02-01','YYYY-MM-DD').endOf('month'), },/*...other ranges*/], },/*...other repeating events*/]; 

JSFiddle


रातों रात

अगर आप चाहते हैं कि रात भर दोहराई जाने वाली घटनाएं ( जैसे यहाँ ), तो अंत में 24:00 तक जाएं। उदाहरण के लिए:

 { start: '10:00', //starts at 10 on monday end: '27:00', //24+3 is handled correctly. dow: [1] } 

JSFiddle

इस साइट पर एक नज़र डालें … http://fajitanachos.com/fullcalendar-and-recurring-events/

यह आवर्ती घटनाओं पर अच्छा प्रेरणा प्रदान करता है। पूर्ण कैलेंडर आईडी के संबंध में पुनरावर्ती ईवेंट का समर्थन करता है आप या तो सर्वर साइड या क्लाइंट पक्ष की घटनाओं को संभाल सकते हैं, लेकिन वरीयता सर्वर साइड होगी मैं आपको कुछ विचार दूंगा, लेकिन इसकी सभी समावेशी नहीं। जैसा कि मैंने आवर्ती घटनाएं सीख ली हैं, वे बनाए रखने के लिए एक दर्द है।

यदि आप उन्हें ग्राहक पक्ष को संभालना चाहते हैं, तो आपको दोहराई जाने वाली घटना की आवृत्ति और उस दिन के तर्क के माध्यम से लूप करना होगा। संभवतः आपको इवेंटरेन्डर कॉलबैक का उपयोग करने की आवश्यकता होगी, फिर विकल्प कॉलबैक का उपयोग करके प्रत्येक रोका गया ईवेंट प्रस्तुत करना होगा। इस के साथ समस्या यह होगी कि आपको अभी भी आवर्ती आवृत्ति और अपने डेटाबेस में अपने आवृत्ति विकल्प के लिए एक तार्किक ऑपरेटर को बचाया होगा …

(स्तंभ 1: आवृत्ति = (इंट) 8, स्तंभ 2: प्रकार = enum (a'b'c), एक = दैनिक, बी = साप्ताहिक, सी = मासिक आदि)।

… और फिर कभी भी आपने उस घटना को संपादित किया था, यह सभी घटनाओं को संपादित करेगा अगर आपको केवल एक घटना को हटाने की ज़रूरत होती है तो आप अपने तर्क के भीतर कई मुद्दों में शामिल हो सकते हैं और यह आसानी से एक गंजट गड़बड़ बन सकता है

दूसरा विकल्प यह सब सर्वर साइड करना था। दो तालिकाओं का निर्माण करना, एक माता पिता की घटना के साथ, और दूसरा, इसके सभी पुनरावृत्तियों के साथ। मूल तालिका में आप सामान्य जानकारी, जैसे कि एक अनूठा आईडी, रंग, पृष्ठभूमि रंग, शीर्षक, सबकुछ, रिज़ूरिंग, फ्रीक्वेंसी, टाइप इत्यादि को संगृहीत कर सकते हैं। बच्चे की तालिका में, आप माता-पिता की मेज से अद्वितीय आईडी का उपयोग करेंगे प्रत्येक पुनरावृत्ति (ध्यान रखें कि यदि आप व्यक्तिगत घटनाओं को हटाना / संपादित करना चाहते हैं तो बच्चे की तालिका पंक्तियों को अपनी स्वयं की अनूठी आईडी और कॉलम जो उस कक्ष पर स्थित होता है, की आवश्यकता होती है) की आवश्यकता होती है। जब आप आवर्ती ईवेंट जोड़ते हैं, तो आपको एक एएनआईएम फ़ील्ड जोड़ने की आवश्यकता होती है जो लेबल करती है या नहीं यह एक पुनरावर्ती घटना है या नहीं AKA …

स्तंभ: आवर्ती = enum ( '0', '1') — सही / गलत

… और फिर आपको प्रत्येक पुनरावृत्ति को जोड़ने की जरूरत है, जिसमें इसकी विशिष्ट जानकारी जैसे कि प्रारंभ और समाप्ति इत्यादि शामिल होती है। जब आप ईवेंट की पूछताछ करते हैं तो आप या तो माता-पिता से पूछ सकते हैं और फिर अगर ईवेंट आवर्ती हो रहा है तो उन घटनाओं में शामिल हो एक दूसरी क्वेरी, या आप एक एकल क्वेरी में तालिका 1.id = table2.parentID पर INNER JOIN का उपयोग कर सकते हैं।

जैसा कि आप देख सकते हैं, आवर्ती घटना बहुत तेजी से विस्तृत हो सकती है, पता लगाएँ कि आपको क्या तर्क है और मुझे आशा है कि इससे आपको या किसी को कम से कम आरंभ करने में मदद मिलेगी। चीयर्स।

यहां माता-पिता और बच्चे के रिश्ते को बनाने की कोई आवश्यकता नहीं है जो कि jquery में पुनरावर्ती घटनाओं के लिए सरल समाधान प्रदान करता है पूर्ण कैलेंडर आपकी पीएचपी फाइल में इन कार्यों का उपयोग करता है जिसे आप अपने सभी ईवेंट कॉल करने के लिए आगे का उपयोग करते हैं।

 function render_fccalendar_events() { $_POST['start'] = strtotime('2013-05-01'); $_POST['end'] = strtotime('2013-05-31'); $start = date('Ym-d',$_POST['start']); $end = date('Ym-d', $_POST['end']); $readonly = (isset($_POST['readonly'])) ? true : false; $events = fcdb_query_events($start, $end); render_json(process_events($events, $start, $end, $readonly)); } function process_events($events, $start, $end, $readonly) { if ($events) { $output = array(); foreach ($events as $event) { $event->view_start = $start; $event->view_end = $end; $event = process_event($event, $readonly, true); if (is_array($event)) { foreach ($event as $repeat) { array_push($output, $repeat); } } else { array_push($output, $event); } } return $output; } } function process_event($input, $readonly = false, $queue = false) { $output = array(); if ($repeats = generate_repeating_event($input)) { foreach ($repeats as $repeat) { array_push($output, generate_event($repeat)); } } else { array_push($output, generate_event($input)); } if ($queue) { return $output; } render_json($output); } function generate_event($input) { $output = array( 'id' => $input->id, 'title' => $input->name, 'start' => $input->start_date, 'end' => $input->end_date, 'allDay' => ($input->allDay) ? true : false, //'className' => "cat{$repeats}", 'editable' => true, 'repeat_i' => $input->repeat_int, 'repeat_f' => $input->repeat_freq, 'repeat_e' => $input->repeat_end ); return $output; } function generate_repeating_event($event) { $repeat_desk = json_decode($event->repeat_desk); if ($event->repeat == "daily") { $event->repeat_int =0; $event->repeat_freq = $repeat_desk->every_day; } if ($event->repeat == "monthly") { $event->repeat_int =2; $event->repeat_freq = $repeat_desk->every_month; } if ($event->repeat == "weekly") { $event->repeat_int =1; $event->repeat_freq = $repeat_desk->every_weak; } if ($event->repeat == "year") { $event->repeat_int =3; $event->repeat_freq = $repeat_desk->every_year; } if ($event->occurrence == "after-no-of-occurrences") { if($event->repeat_int == 0){ $ext = "days"; } if($event->repeat_int == 1){ $ext = "weeks"; } if($event->repeat_int == 2){ $ext = "months"; } if($event->repeat_int == 3){ $ext = "years"; } $event->repeat_end = date('Ym-d',strtotime("+" . $event->repeat_int . " ".$ext)); } else if ($event->occurrence == "no-end-date") { $event->repeat_end = "2023-04-13"; } else if ($event->occurrence == "end-by-end-date") { $event->repeat_end = $event->end_date; } if ($event->repeat_freq) { $event_start = strtotime($event->start_date); $event_end = strtotime($event->end_date); $repeat_end = strtotime($event->repeat_end) + 86400; $view_start = strtotime($event->view_start); $view_end = strtotime($event->view_end); $repeats = array(); while ($event_start < $repeat_end) { if ($event_start >= $view_start && $event_start <= $view_end) { $event = clone $event; // clone event details and override dates $event->start_date = date(AEC_DB_DATETIME_FORMAT, $event_start); $event->end_date = date(AEC_DB_DATETIME_FORMAT, $event_end); array_push($repeats, $event); } $event_start = get_next_date($event_start, $event->repeat_freq, $event->repeat_int); $event_end = get_next_date($event_end, $event->repeat_freq, $event->repeat_int); } return $repeats; } return false; } function get_next_date($date, $freq, $int) { if ($int == 0) return strtotime("+" . $freq . " days", $date); if ($int == 1) return strtotime("+" . $freq . " weeks", $date); if ($int == 2) return get_next_month($date, $freq); if ($int == 3) return get_next_year($date, $freq); } function get_next_month($date, $n = 1) { $newDate = strtotime("+{$n} months", $date); // adjustment for events that repeat on the 29th, 30th and 31st of a month if (date('j', $date) !== (date('j', $newDate))) { $newDate = strtotime("+" . $n + 1 . " months", $date); } return $newDate; } function get_next_year($date, $n = 1) { $newDate = strtotime("+{$n} years", $date); // adjustment for events that repeat on february 29th if (date('j', $date) !== (date('j', $newDate))) { $newDate = strtotime("+" . $n + 3 . " years", $date); } return $newDate; } function render_json($output) { header("Content-Type: application/json"); echo json_encode(cleanse_output($output)); exit; } function cleanse_output($output) { if (is_array($output)) { array_walk_recursive($output, create_function('&$val', '$val = trim(stripslashes($val));')); } else { $output = stripslashes($output); } return $output; } function fcdb_query_events($start, $end) { global $wpdb; $limit = ($limit) ? " LIMIT {$limit}" : ""; $result = $wpdb->get_results("SELECT id, name,start_date,end_date,repeat_desk,`repeat`,occurrence,occurrence_desk FROM " . $wpdb->prefix . "lgc_events WHERE ( (start_date >= '{$start}' AND start_date < '{$end}') OR (end_date >= '{$start}' AND end_date < '{$end}') OR (start_date <= '{$start}' AND end_date >= '{$end}') OR (start_date < '{$end}' AND (`repeat`!= '')) ) ORDER BY start_date{$limit};"); return return_result($result); } function return_result($result) { if ($result === false) { global $wpdb; $this->log($wpdb->print_error()); return false; } return $result; } 

उपर्युक्त कोड में मैंने दोहराए जाने के लिए उपयोग किया है जिसमें मैं पुनरावृत्ति आवृत्ति के लिए जेएसएन कोड को संचित करता हूं यहां छवि विवरण दर्ज करें

और jquery अपनी फ़ाइल कॉल करने के लिए

  events: { url: '<?php echo $lgc_plugindir; ?>includes/imagerotator.php', data: { action: 'get_events' }, type: 'POST' } 

मैंने इसे वर्डप्रेस के लिए इस्तेमाल किया है, आप अपनी आवश्यकता के अनुसार इस कोड का उपयोग कर सकते हैं

फिलहाल मैं परियोजना कर रहा हूं जहां मेरे पास फ़ुल कैलेंडर हैं और मुझे आवर्ती इवेंट्स करना है तो यह मेरी वजह है कि यह कैसे किया जा सकता है। उम्मीद है कि यह कोड किसी को मदद करता है 🙂

मेरे पास डेटाबेस में अगला तालिका है:

 CREATE TABLE IF NOT EXISTS `app_ext_calendar_events` ( `id` int(11) NOT NULL AUTO_INCREMENT, `users_id` int(11) NOT NULL, `name` varchar(255) NOT NULL, `description` text, `start_date` int(11) NOT NULL, `end_date` int(11) NOT NULL, `event_type` varchar(16) NOT NULL, `is_public` tinyint(1) DEFAULT NULL, `bg_color` varchar(16) DEFAULT NULL, `repeat_type` varchar(16) DEFAULT NULL, `repeat_interval` int(11) DEFAULT NULL, `repeat_days` varchar(16) DEFAULT NULL, `repeat_end` int(11) DEFAULT NULL, `repeat_limit` int(11) DEFAULT NULL, PRIMARY KEY (`id`), KEY `idx_users_id` (`users_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=18 ; 

और मैं दोहराने की घटनाओं के साथ घटनाओं को प्राप्त करने के लिए अगले php वर्ग को विकसित किया:

 <?php class calendar { static public function get_events($date_from, $date_to,$calendar_type) { global $app_user; $list = array(); $events_query = db_query("select * from app_ext_calendar_events where FROM_UNIXTIME(start_date,'%Y-%m-%d')>='" . $date_from . "' and FROM_UNIXTIME(end_date,'%Y-%m-%d')<='" . $date_to . "' and event_type='" . $calendar_type . "' and users_id='" . db_input($app_user['id']) . "'"); while($events = db_fetch_array($events_query)) { $list[] = $events; } if(count($repeat_events_list = calendar::get_repeat_events($date_to,$calendar_type))) { $list = array_merge($list,$repeat_events_list); } return $list; } public static function weeks_dif($start, $end) { $year_start = date('Y',$start); $year_end = date('Y',$end); $week_start = date('W',$start); $week_end = date('W',$end); $dif_years = $year_end - $year_start; $dif_weeks = $week_end - $week_start; if($dif_years==0 and $dif_weeks==0) { return 0; } elseif($dif_years==0 and $dif_weeks>0) { return $dif_weeks; } elseif($dif_years==1) { return (42-$week_start)+$week_end; } elseif($dif_years>1) { return (42-$week_start)+$week_end+(($dif_years-2)*42); } } public static function months_dif($start, $end) { // Assume YYYY-mm-dd - as is common MYSQL format $splitStart = explode('-', date('Y-n',$start)); $splitEnd = explode('-', date('Y-n',$end)); if (is_array($splitStart) && is_array($splitEnd)) { $startYear = $splitStart[0]; $startMonth = $splitStart[1]; $endYear = $splitEnd[0]; $endMonth = $splitEnd[1]; $difYears = $endYear - $startYear; $difMonth = $endMonth - $startMonth; if (0 == $difYears && 0 == $difMonth) { // month and year are same return 0; } else if (0 == $difYears && $difMonth > 0) { // same year, dif months return $difMonth; } else if (1 == $difYears) { $startToEnd = 13 - $startMonth; // months remaining in start year(13 to include final month return ($startToEnd + $endMonth); // above + end month date } else if ($difYears > 1) { $startToEnd = 13 - $startMonth; // months remaining in start year $yearsRemaing = $difYears - 2; // minus the years of the start and the end year $remainingMonths = 12 * $yearsRemaing; // tally up remaining months $totalMonths = $startToEnd + $remainingMonths + $endMonth; // Monthsleft + full years in between + months of last year return $totalMonths; } } else { return false; } } public static function get_repeat_events($date_to,$calendar_type) { global $app_user; //convert date to timestamp $date_to_timestamp = get_date_timestamp($date_to); $list = array(); //get all events that already started (start_date<=date_to) $events_query = db_query("select * from app_ext_calendar_events where length(repeat_type)>0 and FROM_UNIXTIME(start_date,'%Y-%m-%d')<='" . $date_to . "' and event_type='" . $calendar_type . "' and users_id='" . db_input($app_user['id']) . "'"); while($events = db_fetch_array($events_query)) { $start_date = $events['start_date']; //set repeat end $repeat_end = false; if($events['repeat_end']>0) { $repeat_end = $events['repeat_end']; } //get repeat events by type switch($events['repeat_type']) { case 'daily': //check repeat events day bay day for($date = $start_date; $date<=$date_to_timestamp; $date+=86400) { if($date>$start_date) { $dif = round(abs($date-$start_date)/86400); if($dif>0) { $event_obj = $events; $event_obj['start_date'] = strtotime('+' . $dif . ' day',$event_obj['start_date']); $event_obj['end_date'] = strtotime('+' . $dif . ' day',$event_obj['end_date']); if(calendar::check_repeat_event_dif($dif,$event_obj,$repeat_end)) { $list[] = $event_obj; } } } } break; case 'weekly': //check repeat events day bay day for($date = $start_date; $date<=$date_to_timestamp; $date+=86400) { if($date>$start_date) { //find days dif $dif = round(abs($date-$start_date)/86400); //find week dif $week_dif = calendar::weeks_dif($start_date, $date); if($dif>0 and (in_array(date('N',$date),explode(',',$events['repeat_days'])))) { $event_obj = $events; $event_obj['start_date'] = strtotime('+' . $dif . ' day',$event_obj['start_date']); $event_obj['end_date'] = strtotime('+' . $dif . ' day',$event_obj['end_date']); if(calendar::check_repeat_event_dif($week_dif,$event_obj,$repeat_end)) { $list[] = $event_obj; } } } } break; case 'monthly': /** *in calendar we display 3 month in one view *so we have to check difference for each month */ //check 1 $date_to_timestamp2 = strtotime('-2 month',$date_to_timestamp); $dif = calendar::months_dif($start_date, $date_to_timestamp2); if($dif>0) { $event_obj = $events; $event_obj['start_date'] = strtotime('+' . $dif . ' month',$event_obj['start_date']); $event_obj['end_date'] = strtotime('+' . $dif . ' month',$event_obj['end_date']); if(calendar::check_repeat_event_dif($dif,$event_obj,$repeat_end)) { $list[] = $event_obj; } } //check 2 $date_to_timestamp1 = strtotime('-1 month',$date_to_timestamp); $dif = calendar::months_dif($start_date, $date_to_timestamp1); if($dif>0) { $event_obj = $events; $event_obj['start_date'] = strtotime('+' . $dif . ' month',$event_obj['start_date']); $event_obj['end_date'] = strtotime('+' . $dif . ' month',$event_obj['end_date']); if(calendar::check_repeat_event_dif($dif,$event_obj,$repeat_end)) { $list[] = $event_obj; } } //check 3 $dif = calendar::months_dif($start_date, $date_to_timestamp); if($dif>0) { $event_obj = $events; $event_obj['start_date'] = strtotime('+' . $dif . ' month',$event_obj['start_date']); $event_obj['end_date'] = strtotime('+' . $dif . ' month',$event_obj['end_date']); if(calendar::check_repeat_event_dif($dif,$event_obj,$repeat_end)) { $list[] = $event_obj; } } break; case 'yearly': $dif = date('Y',$date_to_timestamp)-date('Y',$start_date); if($dif>0) { $events['start_date'] = strtotime('+' . $dif . ' year',$events['start_date']); $events['end_date'] = strtotime('+' . $dif . ' year',$events['end_date']); if(calendar::check_repeat_event_dif($dif,$events,$repeat_end)) { $list[] = $events; } } break; } } return $list; } static public function check_repeat_event_dif($dif,$events,$repeat_end) { $check = true; if($dif>0) { //check interval if($dif/$events['repeat_interval']!=floor($dif/$events['repeat_interval'])) $check=false; //check repeat limit if($events['repeat_limit']>0) if(floor($dif/$events['repeat_interval'])>$events['repeat_limit']) $check=false; } else { $check=false; } //check repeat end date if($repeat_end>0) { if($repeat_end<$events['start_date']) { $check=false; } } return $check; } } 

फ़ंक्शन get_events सभी घटनाओं को प्राप्त + मेरे रास्ते में आवर्ती घटनाओं 4 आवर्ती घटनाओं हैं: दैनिक, साप्ताहिक, मासिक, वार्षिक + दोहराने अंतराल, दोहराने की तारीख के अंत और दोहराने की सीमा है

फ़ंक्शन get_repeat_events प्रत्येक प्रकार के ईवेंट के लिए अंतर की गणना करता है और पुनरावृत्ति ईवेंट शामिल है यदि मौजूद है।

ध्यान दें: फ़ंक्शन db_query () myslq_query या कुछ और के लिए प्रतिस्थापित किया जा सकता है

पूर्ण कैलेंडर के लिए घटनाओं को तैयार करने के लिए मैं अगले कोड का उपयोग कर रहा हूँ

 $list = array(); foreach(calendar::get_events($_GET['start'],$_GET['end'],'personal') as $events) { $start = date('Ymd H:i',$events['start_date']); $end = date('Ymd H:i',$events['end_date']); $list[] = array('id' => $events['id'], 'title' => addslashes($events['name']), 'description' => str_replace(array("\n\r","\n","\r"),'<br>',$events['description']), 'start' => str_replace(' 00:00','',$start), 'end' => str_replace(' 00:00','',$end), 'color'=> $events['bg_color'], 'allDay'=>(strstr($start,'00:00') and strstr($end,'00:00')), 'url' => url_for('ext/calendar/personal_form','id=' . $events['id']) ); } echo json_encode($list); 

यह घटना के भीतर काफी अच्छी तरह से काम करना लग रहा था: समारोह (समारोह, तत्व) {}

  EXAMPLE JSON: var json = [{title: "All Day Event", start: "2015-12-22T00:00", end: "2015-12-22T23:55", dow: [2,4], recurstart: moment("2015-12-22").startOf("week"), recurend: moment("2015-12-22").endOf("week").add(1,'w')},{ title: "Long Event", start: "2015-12-21T00:00", end: "2015-12-24T23:55", recurstart: moment("2015-12-21").startOf("month"), recurend: moment("2015-12-24").endOf("month"), }]; eventRender: function(event, element){ var theDate = moment(event.start).format("YYYY-MM-DD"); var startDate = event.recurstart; var endDate = event.recurend; if (startDate < theDate && theDate < endDate) { console.log(theDate); } else { return event.length>0; } }, /* End eventRender */ 

1) JSON में एक प्रारंभ / समाप्ति तिथि और समय निर्धारित करें।

2) JSON में दो कस्टम दोबारा शुरू करें प्रारंभ और पुनरावृत्ति करना बनाएं।

3) पुनरावर्ती अवधियों को बनाने के लिए moment.js का उपयोग करें: http://momentjs.com/docs/#/durations/

4) रिकूर ​​प्रारंभ सप्ताह की शुरुआत को इंगित करने के लिए (प्रारंभ 🙂 दिनांक का उपयोग करता है

5) रिकूर ​​एंड का उपयोग (अंत 🙂 सप्ताह के अंत को इंगित करने के लिए तारीख + 1 सप्ताह जोड़ना

6) 1, 2, 3 सप्ताह जोड़ना आवर्ती सीमा बना सकता है।

7) जिसे JSON बुलाया गया है (रिकूरिमिट: "") का एक और भाग को पुनरावृत्ति की सीमा का प्रबंधन कर सकता है।

8) इवेंटरेन्डर के भीतर वेरिएब का उपयोग करना – मेरे उदाहरण का उपयोग उस दिनांक को निर्धारित करें (theDate) जो क्षण है (event.start)। यह सही ढंग से प्रारूपित करना महत्वपूर्ण है, ताकि शुरुआत / अंत / पुनरावर्ती आदि सभी मैच प्रारूप यानी (YYYY-MM-DD) http://momentjs.com/docs/#/displaying/format/

9) कस्टम पुनरावर्ती के लिए वैरिएबल

10) कस्टम रिकूरेंड के लिए वैरिएबल

11) मौसम देखने के लिए IF स्टेटमेंट का प्रयोग करें (डेट) (रिकूरस्टामेंट) और (रिकूरेंड) के बीच गिरता है – लॉग परिणाम

12) उस पैरामीटर के भीतर आने वाली अन्य घटनाओं को छिपाने के लिए लंबाई> 0 लौटने के लिए ELSE कथन का उपयोग करें

13) गैर आवर्ती घटनाओं में क्षण होना चाहिए ("मैच की शुरुआत की तारीख") startOf ("महीने") और पल ("मैच की शुरुआत की तारीख")। अंत ("महीने") अन्यथा वे दिखाई नहीं देंगे।

अब एक ऐसा प्लगइन है जो आप जो करना चाहते हैं: http://momentjs.com/docs/#/plugins/recur/