Browsing posts in: CodeIgniter

CodeIgniter: Date And Time Manipulation Class v0.2

Just made a new version of this class to fit a new project I’m doing. Dropped deprecated functions, added time manipulation and few code redesign.

[cc lang=”php”]

* Modified on November 04, 2010, by Vicente Russo Neto
*
* @param integer $date – the date to be processed
* @param string $what – what piece of date to process. Values: day|month|year|hour|minute|second
* @param integer $value – how much will be increased or decreased
* @param string $return_format – ‘mysql’ format or ‘timestamp’ format
* @author Vicente Russo Neto
* @return string|boolean
* @version 0.2
*
* Description: This class can add or subtract days, months, years, hours, minutes, seconds and return the result. Created for
* PHP Framework CodeIgniter (www.codeigniter.com). Tested on 1.7.2.
*
* Usage:
* echo ‘
‘.$this->dateoperations->sum(‘2010-11-04′,’day’,1,FALSE); // Prints: 2010-11-05
* echo ‘
‘.$this->dateoperations->sum(‘2010-11-04 00:00:00′,’minute’,15); // Prints: 2010-11-04 00:15:00
* echo ‘
‘.$this->dateoperations->subtract(‘2010-11-04 00:00:00′,’second’,35); // Prints: 2010-11-03 23:59:25
* echo ‘
‘.$this->dateoperations->subtract(‘2010-11-04 00:00:00′,’year’,1); // Prints: 2009-11-04 00:00:00
* echo ‘
‘.$this->dateoperations->subtract(‘2010-11-04 00:00:00′,’day’,15, FALSE); // Prints: 2010-10-20
*/

class dateOperations {

public function sum ($date,$what,$value,$full=TRUE,$return_format=’mysql’) {

$return = $this->calculate($date,$what,$value,’sum’,$full,$return_format);
return $return;

}

public function subtract ($date,$what,$value,$full=TRUE,$return_format=’mysql’) {

$return = $this->calculate($date,$what,$value,’subtract’,$full,$return_format);
return $return;

}

private function calculate($date,$what,$value,$operation,$full,$return_format) {

// checking args
if($operation!=’sum’ && $operation!=’subtract’) return FALSE;
if ($what!=’day’ && $what!=’month’ && $what!=’year’ && $what!=’hour’ && $what!=’minute’ && $what!=’second’) return FALSE;

// validating date or datetime
if (!preg_match(‘/\\A(?:^((\\d{2}(([02468][048])|([13579][26]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])))))|(\\d{2}(([02468][1235679])|([13579][01345789]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))(\\s(((0?[0-9])|(1[0-9])|(2[0-3]))\\:([0-5][0-9])((\\s)|(\\:([0-5][0-9])))?))?$)\\z/’, $date)) {
return FALSE;
}

/* From this point I’m sure its a valid date or datetime no matter what */

$only_date = substr($date, 0, 10);
$only_time = substr($date, 11, 8);

list($year, $month, $day) = explode(“-“, $only_date);

if ($what==’day’) $day = $operation==’sum’ ? intval($day) + intval($value) : intval($day) – intval($value) ;
if ($what==’month’) $month = $operation==’sum’ ? intval($month) + intval($value) : intval($month) – intval($value);
if ($what==’year’) $year = $operation==’sum’ ? intval($year) + intval($value) : intval($year) – intval($value);

$hour = $minute = $second = 0;

if($only_time!=”) { // we have time too!

list($hour, $minute, $second) = explode(“:”, $only_time);

if ($what==’hour’) $hour = $operation==’sum’ ? intval($hour) + intval($value) : intval($hour) – intval($value);
if ($what==’minute’) $minute = $operation==’sum’ ? intval($minute) + intval($value) : intval($minute) – intval($value);
if ($what==’second’) $second = $operation==’sum’ ? intval($second) + intval($value) : intval($second) – intval($value);

}

$date_tmp = mktime($hour, $minute, $second, $month, $day, $year);

if ($return_format==’mysql’) {
if($full) $date_tmp = date(‘Y-m-d H:i:s’, $date_tmp); // return date and time
else $date_tmp = date(‘Y-m-d’, $date_tmp); // return only date
} elseif (!$return_format==’timestamp’) {
return FALSE;
}

return $date_tmp;

}

}

/* End of file dateOperations.php */
/* Location: ./application/libraries/dateOperations.php */
[/cc]

Put the dateOperations.php file on application/libraries folder.
Usage examples:

[cc lang=”php”]
$this->load->library(‘dateoperations’);

echo ‘
‘.$this->dateoperations->sum(‘2010-11-04′,’day’,1,FALSE); // Prints: 2010-11-05
echo ‘
‘.$this->dateoperations->sum(‘2010-11-04 00:00:00′,’minute’,15); // Prints: 2010-11-04 00:15:00
echo ‘
‘.$this->dateoperations->subtract(‘2010-11-04 00:00:00′,’second’,35); // Prints: 2010-11-03 23:59:25
echo ‘
‘.$this->dateoperations->subtract(‘2010-11-04 00:00:00′,’year’,1); // Prints: 2009-11-04 00:00:00
echo ‘
‘.$this->dateoperations->subtract(‘2010-11-04 00:00:00′,’day’,15, FALSE); // Prints: 2010-10-20
[/cc]

Download dateOperations v0.2

Did you like this? Share it:

CodeIgniter: Date Manipulation Class

I made myself a class make some basic operations, like adding and subtracting days, months or years from a date, and return in mysql-ready format or timestamp. Here`s the code:

[cc lang=”php”]
< ?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); /** * * Class dateOperations * Created in July 07, 2009, by Vicente Russo Neto
*
* @param integer $date – the date to be processed
* @param string $what – what piece of date to process, day, month or year
* @param integer $value – how much will be increased or decreased
* @param string $return_format – ‘mysql’ format or ‘timestamp’ format
* @author Vicente Russo Neto
* @return string|boolean
* @version 0.1
*
* Description: This class can add or subtract days, months or years and return the result. Created for
* PHP Framework CodeIgniter (www.codeigniter.com). Tested on 1.7.1.
*
* Usage:
* $this->load->library(‘dateoperations’);
* echo $this->dateoperations->subtract(‘2009-07-01′,’day’,1); // Prints: 2009-06-30
* echo $this->dateoperations->sum(‘2009-07-01′,’year’,1); // Prints: 2010-07-01
* echo $this->dateoperations->subtract(‘2009-07-01′,’day’,15); // Prints: 2009-06-16
*/

class dateOperations {

function sum($date,$what=FALSE,$value,$return_format=’mysql’) {

list($year, $month, $day) = split(“-“, $date);

if ($what!=’day’ && $what!=’month’ && $what!=’year’) return false;

if ($what==’day’) $day = $day + intval($value);
if ($what==’month’) $month = $month + intval($value);
if ($what==’year’) $year = $year + intval($value);

$date_tmp = mktime(0, 0, 0, $month, $day, $year);

if ($return_format==’mysql’) {
$date_tmp = date(‘Y-m-d’, $date_tmp);
} elseif (!$return_format==’timestamp’) {
return false;
}

return $date_tmp;

}

function subtract($date,$what=FALSE,$value,$return_format=’mysql’) {

list($year, $month, $day) = split(“-“, $date);

if ($what!=’day’ && $what!=’month’ && $what!=’year’) return false;

if ($what==’day’) $day = $day – intval($value);
if ($what==’month’) $month = $month – intval($value);
if ($what==’year’) $year = $year – intval($value);

$date_tmp = mktime(0, 0, 0, $month, $day, $year);

if ($return_format==’mysql’) {
$date_tmp = date(‘Y-m-d’, $date_tmp);
} elseif (!$return_format==’timestamp’) {
return false;
}

return $date_tmp;

}

}

?>
[/cc]

Put the dateOperations.php file on application/libraries folder.

Usage examples:

[cc lang=”php”]
< ?php $this->load->library(‘dateoperations’);
echo $this->dateoperations->subtract(‘2009-07-01′,’day’,1); // Prints: 2009-06-30
echo $this->dateoperations->sum(‘2009-07-01′,’year’,1); // Prints: 2010-07-01
echo $this->dateoperations->subtract(‘2009-07-01′,’day’,15); // Prints: 2009-06-16

?>
[/cc]

Download the library

Continue Reading

Did you like this? Share it:

CodeIgniter Folder Icons for Leopard

Hello there! I decided to play a bit and make some folder icons. So here is my contribution for mac developers on this great framework. I made 3 versions, yellow, red and default blue color.

The icon set includes sizes from 16px to 512px, and real folders (just drag and drop on “get info” dialog). As is the case with any downloads I make available here, please do not redistribute the icons or attempt to pass them off as your own.

codeigniterfoldericons

Download codeigniter_iconset.zip (2.03MB)

Did you like this? Share it:

Pages:1234