PHP Classes
Icontem

File: DATA/SQLDatetime.php


  Search   All class groups All class groups   Latest entries Latest entries   Top 10 charts Top 10 charts   Newsletter Newsletter   Blog Blog   Forums Forums   Help FAQ Help FAQ  
  Login   Register  
Recommend this page to a friend! ReTweet ReTweet Stumble It! Stumble It! Bookmark in del.icio.us Bookmark in del.icio.us
  Classes of Martin Alterisio  >  DATA  >  DATA/SQLDatetime.php  
File: DATA/SQLDatetime.php
Role: Class source
Content type: text/plain
Description: ANSI SQL Datetime data type representation.
Class: DATA
Access data stored in MySQL tables like arrays
 

Contents

Class file image Download
<?php
/**
 * @package DATA
 */

/**
 * ANSI SQL Datetime data type representation.
 * 
 * When inboxing, if the date or time is invalid,
 * {@link DATA_InvalidDatetime} is thrown.
 */
class DATA_SQLDatetime extends DATA_SQLType {
    
/**
     * The date year.
     * @var int
     */
    
protected $year;
    
/**
     * The date month.
     * @var int
     */
    
protected $month;
    
/**
     * The date day.
     * @var int
     */
    
protected $day;
    
/**
     * The time hour.
     * @var int
     */
    
protected $hour;
    
/**
     * The time minutes.
     * @var int
     */
    
protected $minutes;
    
/**
     * The time seconds.
     * @var int
     */
    
protected $seconds;
    
    
/**
     * Builds a Date data type with the specified year, month and day, or todays date if not specified.
     * 
     * Throws {@link DATA_InvalidDatetime}.
     * 
     * @param boolean $nullable True if the type is nullable.
     * @param int $year The date year. Optional.
     * @param int $month The date month. Optional.
     * @param int $day The date day. Optional.
     * @param int $hour The time hour.
     * @param int $minutes The time minutes.
     * @param int $seconds The time seconds.
     */
    
public function __construct($nullable$year null$month null$day null,
                                           
$hour null$minutes null$seconds null) {
        
parent::__construct($nullableis_null($year) || is_null($month) || is_null($day)
                                       || 
is_null($hour) || is_null($minutes) || is_null($seconds));
        if (!
$this->isNull()) {
            
$this->setDate($year$month$day);
            
$this->setTime($hour$minutes$seconds);
        }
    }
    
    
/**
     * Returns a time object with now's time.
     * 
     * @return DATA_SQLDatetime Now's time.
     */
    
public static function now() {
        
$now time();
        
$year = (int)date("Y"$now);
        
$month = (int)date("n"$now);
        
$day = (int)date("j"$now);
        
$hour = (int)date("G"$now);
        
$minutes = (int)date("i"$now);
        
$seconds = (int)date("s"$now);
        return new 
DATA_SQLDatetime(true$year$month$day$hour$minutes$seconds);
    }
    
    
/**
     * Returns the date year.
     * 
     * @return int The date year.
     */
    
public function getYear() {
        return 
$this->year;
    }
    
    
/**
     * Sets the date year.
     * 
     * Throws {@link DATA_InvalidDatetime}.
     * 
     * @param int $year The date year.
     */
    
public function setYear($year) {
        
$this->setDate($year$this->month$this->day);
    }
    
    
/**
     * Returns the date month.
     * 
     * @return int The date month.
     */
    
public function getMonth() {
        return 
$this->month;
    }
    
    
/**
     * Sets the date month.
     * 
     * Throws {@link DATA_InvalidDatetime}.
     * 
     * @param int $year The date month.
     */
    
public function setMonth($month) {
        
$this->setDate($this->year$month$this->day);
    }
    
    
/**
     * Returns the date day.
     * 
     * @return int The date day.
     */
    
public function getDay() {
        return 
$this->day;
    }
    
    
/**
     * Sets the date day.
     * 
     * Throws {@link DATA_InvalidDatetime}.
     * 
     * @param int $year The date day.
     */
    
public function setDay($day) {
        
$this->setDate($this->year$this->month$day);
    }
    
    
/**
     * Returns the time hour.
     * 
     * @return int The time hour.
     */
    
public function getHour() {
        return 
$this->hour;
    }
    
    
/**
     * Sets the time hour.
     * 
     * Throws {@link DATA_InvalidDatetime}.
     * 
     * @param int $year The time hour.
     */
    
public function setHour($hour) {
        
$this->setTime($hour$this->minutes$this->seconds);
    }
    
    
/**
     * Returns the time minutes.
     * 
     * @return int The time minutes.
     */
    
public function getMinutes() {
        return 
$this->month;
    }
    
    
/**
     * Sets the time minutes.
     * 
     * Throws {@link DATA_InvalidDatetime}.
     * 
     * @param int $year The time minutes.
     */
    
public function setMinutes($minutes) {
        
$this->setTime($this->hour$minutes$this->seconds);
    }
    
    
/**
     * Returns the time seconds.
     * 
     * @return int The time seconds.
     */
    
public function getSeconds() {
        return 
$this->day;
    }
    
    
/**
     * Sets the time seconds.
     * 
     * Throws {@link DATA_InvalidDatetime}.
     * 
     * @param int $year The time seconds.
     */
    
public function setSeconds($seconds) {
        
$this->setTime($this->hour$this->minutes$seconds);
    }
    
    
/**
     * Sets all the date values (year, month, day).
     * 
     * Throws {@link DATA_InvalidDatetime}.
     * 
     * @param int $year The date year.
     * @param int $month The date month.
     * @param int $day The date day.
     */
    
public function setDate($year$month$day) {
        if (!
$this->checkDate($year$month$day)) {
            
throw new DATA_InvalidDatetime("$year-$month-$day");
        }
        
$this->year $year;
        
$this->month $month;
        
$this->day $day;
        
$this->setNotNull();
    }
    
    
/**
     * Sets all the time values (hour, minutes, seconds).
     * 
     * Throws {@link DATA_InvalidDatetime}.
     * 
     * @param int $hour The time hour.
     * @param int $minutes The time minutes.
     * @param int $seconds The time seconds.
     */
    
public function setTime($hour$minutes$seconds) {
        if (!
$this->checkTime($hour$minutes$seconds)) {
            
throw new DATA_InvalidDatetime("$hour:$minutes:$seconds");
        }
        
$this->hour $hour;
        
$this->minutes $minutes;
        
$this->seconds $seconds;
        
$this->setNotNull();
    }
    
    
public function setNull() {
        
parent::setNull();
        
$this->year null;
        
$this->month null;
        
$this->day null;
        
$this->hour null;
        
$this->minutes null;
        
$this->seconds null;
    }
    
    
public function __toString() {
        return 
str_pad($this->year4'0'STR_PAD_LEFT) . '-'
             
str_pad($this->month2'0'STR_PAD_LEFT) . '-'
             
str_pad($this->day2'0'STR_PAD_LEFT)
             . 
' '
             
str_pad($this->hour2'0'STR_PAD_LEFT) . ':'
             
str_pad($this->minutes2'0'STR_PAD_LEFT) . ':'
             
str_pad($this->seconds2'0'STR_PAD_LEFT);
    }
    
    
/**
     * Checks if a given date is valid.
     * 
     * @param int $year The date year.
     * @param int $month The date month.
     * @param int $day The date day.
     * @return bool True if the date is valid.
     */
    
protected function checkDate($year$month$day) {
        if (
$month 12 || $month 1) {
            return 
false;
        }
        if (
$day self::daysOfMonth($year$month) || $day 1) {
            return 
false;
        }
        return 
true;
    }
    
    
/**
     * Returns how many days a month has.
     * 
     * @param int $year The date year.
     * @param int $month The date month.
     * @return int Days in the month.
     */
    
protected static function daysOfMonth($year$month) {
        return (int) 
date('t'strtotime("$year-$month-01"));
    }
    
    
/**
     * Checks if a given time is valid.
     * 
     * @param int $hour The time hour.
     * @param int $minutes The time minutes.
     * @param int $seconds The time seconds.
     * @return bool True if the time is valid.
     */
    
protected function checkTime($hour$minutes$seconds) {
        if (
$hour >= 24 || $hour 0) {
            return 
false;
        }
        if (
$minutes >= 60 || $minutes 0) {
            return 
false;
        }
        if (
$seconds >= 60 || $seconds 0) {
            return 
false;
        }
        return 
true;
    }
}
?>

 
  Advertise on this site Advertise on this site   Site map Site map   Statistics Statistics   Site tips Site tips   Privacy policy Privacy policy   Contact Contact  

For more information send a message to :
info at phpclasses dot org.
Copyright (c) Icontem 1999-2009 PHP Classes - PHP Class Scripts
  PHP Book Reviews - Reviews of books and other products