/** * This function counts visits of a object * * @param $id Object id (content_id) * @param $user_id (Optional) User id (0 means visitors) * @param $period (Optional) Period for count. Valid values: 'week', 'month', year' * * @returns an array of labels => values */ function getObjectVisits($id, $user_id = 0, $period = 'week') { YDInclude('YDDate.php'); // compute start date $date = new YDDate(); $labels = array(); if ($period == 'week') { for ($i = 0; $i < 7; $i++) { $labels[] = $date->getDayName(); $date->addDay(-1); } } if ($period == 'month') { for ($i = 0; $i < 4; $i++) { $labels[] = $date->getMonthName(); $date->addMonth(-1); } } if ($period == 'year') { for ($i = 0; $i < 3; $i++) { $labels[] = $date->getYear(); $date->addYear(-1); } } $labels = array_reverse($labels); $this->resetAll(); $this->user_id = intval($user_id); }
function result($currentdate, $operation, $number, $type) { // create date object with timestamp from the 'currentdate' form element $date = new YDDate(); $date->set(intval($currentdate)); // if operation is 1 we want subtract the number if ($operation == 1) { $number = -intval($number); } else { $number = intval($number); } // add number to date switch (intval($type)) { case 0: $date->addMinute($number); break; case 1: $date->addDay($number); break; case 2: $date->addMonth($number); break; default: $date->addYear($number); } // assign span with date $this->ajax->addResult('myspanresult', YDStringUtil::formatDate($date->getTimestamp(), 'datetime')); // return response to client browser return $this->ajax->processResults(); }
function actionDefault() { YDDebugUtil::dump(YDDate::now(), 'YDDate::now()'); YDDebugUtil::dump(YDDate::nowCustom("%d"), 'YDDate::nowCustom( "%d" )'); YDDebugUtil::dump(YDDate::nowCustom("%d %B %Y"), 'YDDate::nowCustom( "%d %B %Y" )'); // Static validation YDDebugUtil::dump(YDDate::get("HUM", time()), 'YDDate::get( "HUM", time() )'); YDDebugUtil::dump(YDDate::get("EUN_DATE", time()), 'YDDate::get( "EUN_DATE", time() )'); YDDebugUtil::dump(YDDate::get("HUM_DATE", "2004-03-12", "ISO"), 'YDDate::get( "HUM_DATE", "2004-03-12", "ISO" )'); YDDebugUtil::dump(YDDate::now(), 'YDDate::now()'); YDDebugUtil::dump(YDDate::now("EUN_DATE"), 'YDDate::now( "EUN_DATE" )'); YDDebugUtil::dump(YDDate::now("ISO_TIME"), 'YDDate::now( "ISO_TIME" )'); YDDebugUtil::dump(YDDate::now("HUM"), 'YDDate::now( "HUM" )'); YDDebugUtil::dump(YDDate::isValid(""), 'YDDate::isValid( "" )'); YDDebugUtil::dump(YDDate::isValid("0000-00-00 00:00:00", "ISO"), 'YDDate::isValid( "0000-00-00 00:00:00", "ISO" )'); YDDebugUtil::dump(YDDate::isValid("0000-00-00 00:00:00", "ISO", true, false), 'YDDate::isValid( "0000-00-00 00:00:00", "ISO", true, false )'); YDDebugUtil::dump(YDDate::isValid("2005-5-5"), 'YDDate::isValid( "2005-5-5" )'); YDDebugUtil::dump(YDDate::isValid("2005 5 15"), 'YDDate::isValid( "2005 5 15" )'); YDDebugUtil::dump(YDDate::isValid("20050515", "SQL"), 'YDDate::isValid( "20050515", "SQL" )'); YDDebugUtil::dump(YDDate::isValid("15 5 2005", "EUN"), 'YDDate::isValid( "15 5 2005", "EUN" )'); YDDebugUtil::dump(YDDate::isValid("15 May 2005", "HUM"), 'YDDate::isValid( "15 May 2005", "HUM" )'); YDDebugUtil::dump(YDDate::isValid("5.15.2005", "USA"), 'YDDate::isValid( "5.15.2005", "USA" )'); YDDebugUtil::dump(YDDate::isValid("5.15.2005", "EUN"), 'YDDate::isValid( "5.15.2005", "EUN" )'); YDDebugUtil::dump(YDDate::isValid("5.15.2005", "HUM"), 'YDDate::isValid( "5.15.2005", "HUM" )'); YDDebugUtil::dump(YDDate::isValid("5.15.2005", "ISO"), 'YDDate::isValid( "5.15.2005", "ISO" )'); YDDebugUtil::dump(YDDate::isValid("5.15.2005", "SQL"), 'YDDate::isValid( "5.15.2005", "SQL" )'); $date = new YDDate(); // Setting an empty date $date->set("0000-00-00 00:00:00"); YDDebugUtil::dump($date->get(), '$date->set( "0000-00-00 00:00:00" )'); // Setting Unix epoch $date->set(0); YDDebugUtil::dump($date->get(), '$date->set( 0 )'); // Setting in SQL format $date->set("20050515", "SQL"); YDDebugUtil::dump($date->get(), '$date->set( "20050515", "SQL" )'); // Setting in ISO format $date->set("2005-5-5"); YDDebugUtil::dump($date->get(), '$date->set( "2005-5-15" )'); $date->set("2005 5 15"); YDDebugUtil::dump($date->get(), '$date->set( "2005 5 15" )'); // Setting in EUN format $date->set("15 5 2005", "EUN"); YDDebugUtil::dump($date->get(), '$date->set( "15 5 2005", "EUN" )'); // Setting in HUM format $date->set("15 May 2005", "HUM"); YDDebugUtil::dump($date->get(), '$date->set( "15 May 2005", "HUM" )'); // Setting in USA format $date->set("5.15.2005", "USA"); YDDebugUtil::dump($date->get(), '$date->set( "5.15.2005", "USA" )'); // Setting a custom format YDDebugUtil::dump(YDDateFormat::setString("custom format", "%a %A %b %B %d %m %Y %H %M %S %T %w"), 'YDDateFormat::setString( "custom format", "%a %A %b %B %d %m %Y %H %M %S %T %w" )'); // Returning the date with a custom format YDDebugUtil::dump($date->get("custom format"), '$date->get( "custom format" )'); // Setting the date to today $date->set(); YDDebugUtil::dump($date->get(), '$date->set()'); // Getting date info YDDebugUtil::dump($date->get(), '$date->get()'); YDDebugUtil::dump($date->isToday(), '$date->isToday()'); YDDebugUtil::dump($date->isTomorrow(), '$date->isTomorrow()'); YDDebugUtil::dump($date->isYesterday(), '$date->isYesterday()'); YDDebugUtil::dump($date->isCurrentHour(), '$date->isCurrentHour()'); YDDebugUtil::dump($date->isCurrentMinute(), '$date->isCurrentMinute()'); YDDebugUtil::dump($date->isCurrentMonth(), '$date->isCurrentMonth()'); YDDebugUtil::dump($date->isCurrentYear(), '$date->isCurrentYear()'); YDDebugUtil::dump($date->getDayName(), '$date->getDayName()'); YDDebugUtil::dump($date->getDayName(true), '$date->getDayName( true )'); YDDebugUtil::dump($date->getMonthName(), '$date->getMonthName()'); YDDebugUtil::dump($date->getMonthName(true), '$date->getMonthName( true )'); // Getting date info with different locale YDDebugUtil::dump(YDLocale::set("ptb"), 'YDLocale::set( "ptb" )'); YDDebugUtil::dump($date->getDayName(), '$date->getDayName()'); YDDebugUtil::dump($date->getDayName(true), '$date->getDayName( true )'); YDDebugUtil::dump($date->getMonthName(), '$date->getMonthName()'); YDDebugUtil::dump($date->getMonthName(true), '$date->getMonthName( true )'); // Comparing two dates $date2 = $date; $date2->addHour(10); $date2->addDay(35); YDDebugUtil::dump($date->get(), 'Date 1'); YDDebugUtil::dump($date2->get(), 'Date 2'); YDDebugUtil::dump($date->getDifference($date2), 'Difference between Dates 1 and 2'); // Adding values YDDebugUtil::dump($date->get(), '$date->get()'); YDDebugUtil::dump($date->addSecond(70), '$date->addSecond( 70 )'); YDDebugUtil::dump($date->addMinute(80), '$date->addMinute( 80 )'); YDDebugUtil::dump($date->addHour(24), '$date->addHour( 24 )'); YDDebugUtil::dump($date->addHour(12), '$date->addHour( 12 )'); YDDebugUtil::dump($date->addHour(-10), '$date->addHour( -10 )'); YDDebugUtil::dump($date->addHour(-24), '$date->addHour( -24 )'); YDDebugUtil::dump($date->addMinute(10), '$date->addMinute( 10 )'); YDDebugUtil::dump($date->addMinute(60), '$date->addMinute( 60 )'); YDDebugUtil::dump($date->addMinute(120), '$date->addMinute( 120 )'); YDDebugUtil::dump($date->addMinute(-120), '$date->addMinute( -120 )'); YDDebugUtil::dump($date->addMinute(360), '$date->addMinute( 360 )'); YDDebugUtil::dump($date->addSecond(10), '$date->addSecond( 10 )'); YDDebugUtil::dump($date->addSecond(60), '$date->addSecond( 60 )'); YDDebugUtil::dump($date->addSecond(3600), '$date->addSecond( 3600 )'); YDDebugUtil::dump($date->addSecond(), '$date->addSecond( -10 )'); YDDebugUtil::dump($date->addDay(40), '$date->addDay( 40 )'); YDDebugUtil::dump($date->addDay(-3), '$date->addDay( -3 )'); YDDebugUtil::dump($date->addMonth(1), '$date->addMonth( 1 )'); YDDebugUtil::dump($date->addMonth(12), '$date->addMonth( 12 )'); YDDebugUtil::dump($date->addMonth(10), '$date->addMonth( 10 )'); YDDebugUtil::dump($date->addMonth(-4), '$date->addMonth( -4 )'); YDDebugUtil::dump($date->addMonth(-20), '$date->addMonth( -20 )'); YDDebugUtil::dump($date->addYear(1), '$date->addYear( 1 )'); YDDebugUtil::dump($date->addYear(12), '$date->addYear( 12 )'); YDDebugUtil::dump($date->addYear(10), '$date->addYear( 10 )'); YDDebugUtil::dump($date->addYear(-4), '$date->addYear( -4 )'); YDDebugUtil::dump($date->addYear(-20), '$date->addYear( -20 )'); // Getting an array YDDebugUtil::dump($date->toArray(), '$date->toArray()'); $date->set("1981-11-20"); YDDebugUtil::dump($date->get(), '$date->set( "1981-11-20" )'); YDDebugUtil::dump($date->getYearsToToday(), '$date->getYearsToToday()'); // Should return an error YDDebugUtil::dump($date->set("no_date"), '$date->set( "no_date" )'); }
/** * This function returns the number of days in the month. * * @param $month (Optional) If empty, object's month. Default: empty. * @param $year (Optional) If empty, object's year. Default: empty. * * @returns The number of days in the month. * * @static If $month and $year are passed. */ function getDaysInMonth($month = '', $year = '') { if (!$month) { $month = $this->month; } if (!$year) { $year = $this->year; } switch ((int) $month) { case 1: return 31; case 2: return YDDate::isLeapYear($year) ? 29 : 28; case 3: return 31; case 4: return 30; case 5: return 31; case 6: return 30; case 7: return 31; case 8: return 31; case 9: return 30; case 10: return 31; case 11: return 30; case 12: return 31; } return 0; }
/** * This function calculates the difference in years, quarters, months, * weeks, weekdays, days, hours, minutes and seconds between the object * and another date passed. * * @param $date The other date to be compared. A YDDate object, * timestamp, array or string. If null, the current date. * * @returns An array with all the difference information. * * @todo Not very efficient for big differences. */ function getDifference($date) { if (!extension_loaded('calendar')) { trigger_error('The PHP calendar extension must be enabled', YD_ERROR); } if ($this->isDateEmpty()) { trigger_error('Cannot make calculations with an empty date', YD_ERROR); } $start = $this; $end = new YDDate($date); $span = array(); $span['years'] = 0; $span['quarters'] = 0; $span['months'] = 0; $span['weeks'] = 0; $span['days'] = 0; $span['weekdays'] = 0; $span['hours'] = 0; $span['minutes'] = 0; $span['seconds'] = 0; if ($start->timestamp_string == $end->timestamp_string) { return $span; } $julian_start = GregoriantoJD($start->month, $start->day, $start->year); $julian_end = GregoriantoJD($end->month, $end->day, $end->year); $days = abs($julian_end - $julian_start); $years = 0; $quarters = 0; $months = 0; $weeks = 0; $weekdays = 0; $hours = 0; $minutes = 0; $seconds = 0; $neg = 1; $s =& $start; $e =& $end; if ($start->timestamp_string > $end->timestamp_string) { $neg = -1; $s =& $end; $e =& $start; } $hours += $e->hours - $s->hours; $minutes += $e->minutes - $s->minutes; $seconds += $e->seconds - $s->seconds; $hours += $days * 24; $minutes += $hours * 60; $seconds += $minutes * 60; $count = $days; $weekend = $s->getWeekDay() == 0 || $s->getWeekDay() == 6 ? true : false; $monthend = $s->day == YDDate::getDaysInMonth($s->month, $s->year) ? true : false; $quarterend = $s->month == 3 * $s->getQuarter() && $monthend ? true : false; $yearend = $s->month === 12 && $s->day === 31 ? true : false; while ($count > 0) { if (!($s->getWeekDay() == 0 || $s->getWeekDay() == 6)) { if ($weekend) { $weeks++; } $weekdays++; $weekend = false; } else { $weekend = true; } if (!($s->day == YDDate::getDaysInMonth($s->month, $s->year))) { if ($monthend) { $months++; } $monthend = false; } else { $monthend = true; } if (!($s->month == 3 * $s->getQuarter() && $monthend)) { if ($quarterend) { $quarters++; } $quarterend = false; } else { $quarterend = true; } if (!($s->month === 12 && $s->day === 31)) { if ($yearend) { $years++; } $yearend = false; } else { $yearend = true; } $s->addDay(1); $count--; } $span['years'] = $neg * $years; $span['quarters'] = $neg * $quarters; $span['months'] = $neg * $months; $span['weeks'] = $neg * $weeks; $span['days'] = $neg * $days; $span['weekdays'] = $neg * $weekdays; $span['hours'] = $neg * $hours; $span['minutes'] = $neg * $minutes; $span['seconds'] = $neg * $seconds; return $span; }
/** * This function sets the value for the date element. * * @param $val (optional) The value for this object. */ function setValue($val = array()) { $now = getdate(); $elements = $this->_getElements(); $getdate = array('day' => 'mday', 'month' => 'mon', 'year' => 'year', 'hours' => 'hours', 'minutes' => 'minutes', 'seconds' => 'seconds'); // if we have a string (eg: "2007-01-01 00:00:01") we will get the array if (!is_numeric($val) && !is_array($val)) { // include YDDate lib YDInclude('YDDate.php'); // create date object and export array $_d = new YDDate($val); $val = $_d->toArray(); } if (is_numeric($val)) { $now = getdate($val); if (!is_int($val)) { $val = intval($val); } $this->_value = array(); foreach ($elements as $element) { $this->_value[$element] = $now[$getdate[$element]]; } } elseif ($val == array()) { foreach ($elements as $element) { $this->_value[$element] = $now[$getdate[$element]]; } } else { $this->_value = $val; foreach ($elements as $element) { if (!isset($this->_value[$element])) { $this->_value[$element] = $now[$getdate[$element]]; } } } foreach ($elements as $element) { if ($element == 'year') { continue; } if (strlen($this->_value[$element]) == 1) { $this->_value[$element . '_with_zero'] = '0' . $this->_value[$element]; } else { $this->_value[$element . '_with_zero'] = $this->_value[$element]; } } $this->_value['timestamp_string'] = ''; if (isset($this->_value['year'])) { $this->_value['timestamp_string'] .= $this->_value['year']; } if (isset($this->_value['month_with_zero'])) { $this->_value['timestamp_string'] .= $this->_value['month_with_zero']; } if (isset($this->_value['day_with_zero'])) { $this->_value['timestamp_string'] .= $this->_value['day_with_zero']; } if (isset($this->_value['hours_with_zero'])) { $this->_value['timestamp_string'] .= $this->_value['hours_with_zero']; } if (isset($this->_value['minutes_with_zero'])) { $this->_value['timestamp_string'] .= $this->_value['minutes_with_zero']; } if (isset($this->_value['seconds_with_zero'])) { $this->_value['timestamp_string'] .= $this->_value['seconds_with_zero']; } }
function getStatsDays($limit = 7) { YDInclude('YDDate.php'); $records = $this->db->getRecords('SELECT date, SUM(hits) AS hits FROM #_statistics GROUP BY date ORDER BY date DESC', $limit); foreach ($records as $key => $record) { $date = new YDDate($record['date']); $records[$key]['date'] = $record['date'] . ' (' . strtolower($date->getDayName()) . ')'; } return $records; }
/** * This function returns the quarter of the date. * * @param $date (Optional) A YDDate object, timestamp, array or string. * If null, the date of the object. Default: null. * @param $format (Optional) The format name. Default: 'ISO'. * * @returns The quarter. * * @static If $date is passed. */ function getQuarter($date = null, $format = 'ISO') { if ($date === null) { $date = $this->parse($date, $format); } else { $date = YDDate::parse($date, $format); } switch ($date['month']) { case 1: case 2: case 3: return 1; case 4: case 5: case 6: return 2; case 7: case 8: case 9: return 3; case 10: case 11: case 12: return 4; } return 0; }