Class modify date and time

Potrzebowałem klasy do obsługi czasu w PHP więc ją wykonałem.

Od jakiegoś czasu zajmowałem się projektem z dużą ilością danych zapisywanych w dwóch formatach do bazy danych i jeszcze parę innych, jak można tak napisać. Jeden unixsowy, a drugi mysql (tradycyjny).  Ciągłe zmienianie się zapisów do bazy danych, a to w jednym formacie, a to w drugim doprowadzało mnie do pi…pi…pi.  Postanowiłem zrobić klasę, która te wszystkie rzeczy będzie miała w sobie i będzie obsługiwać nie tylko konwersję pomiędzy formatami,  ale także jeszcze wyświetlała całą datę z polskimi dniami jak też z polskimi miesiącami. Ponadto potrzebowałem modyfikowania tej daty albo dodawanie albo odejmowanie dni miesięcy lat, a także czasu godzin, sekund, minut. Tak właśnie powstała klasa którą nazwałem modify_date_and_time czyli modyfikuj datę i czas. Myślę że nie jednemu z was się przyda do pracy, albo do zabawy.

 Wywołanie banalnie proste określamy datę i potem używamy tych metod które są nam potrzebne np. żeby przekonwertować datę na czas unixsowy wystarczy taki kawałek kodu:

 

                      

            
        $KK = new  modify_date_and_time();
	$KK->set_dates('2015-01-03 08:09:11');
	## czas mysql zmienia na uniksowy  ##
        echo  $KK->format_unix().'
';
	## czas uniksowy zmienia na mysql  ##
	$unix = new  modify_date_and_time();
	$unix->set_dates('1420268951');
echo '
'.$unix->format_mysql().'
';

Jeżeli natomiast chcemy całą datę z polskimi miesiącami to tak:

 

        $KK = new  modify_date_and_time();
	$KK->set_dates('2015-01-03 08:09:11');
	## Cała data z nazwami dni i miesięcy ##
   echo $KK->data_all($cale_nazwy=1).'
';

Możemy wyświetlać zmodyfikowaną całą datę jak też pojedyńcze wartości zmodyfikowane jak i nie zmienione.

 Klasa pozwala zrobić odlicznie od data-poczatek do data-koniec pokazuje ile pozostało lat, miesięcy, tygodni i dni.

Całość co potrafi klasa poniżej.

modify_date_and_time.php

/** 
* PHP 5.1
* @version v1 modify_date_and_time
* @license Apache License, Version 2.0.
* @author Adam Berger <ber34#o2.pl>
* @Site www.joomla-cms.com.pl
*/

Class modify_date_and_time{

	 private $years;
	 private $month;
	 private $day;
	 private $hour;
	 private $minutes;
	 private $seconds;
	 private $data_czas;
	  
	  
	public function __construct(){
	  $this->dates= new DateTime();
	}
	
	 public function data_day($plu_min, $day){
      $this->dates->modify( $plu_min.$day.' day' );
      return $this->dates->format('d');
  }
 
     public function data_month($plu_min, $month){
      $this->dates->modify( $plu_min.$month.' month');
      return $this->dates->format('m');
  }
  
     public function data_year($plu_min,$year){
     $this->dates->modify( $plu_min.$year.' years' );
      return $this->dates->format('Y'); 
  }
  
  
  	 public function time_hour($plu_min, $hour){
      $this->dates->modify( $plu_min.$hour.' hour' );
     // return date('G', strtotime($plu_min.$hour.' hour'));  
	   return $this->dates->format('G');
  }
 
     public function time_minute($plu_min, $minutes){
      $this->dates->modify( $plu_min.$minutes.' minutes');
      return $this->dates->format('i');
  }
  
     public function time_seconds($plu_min, $seconds){
      $this->dates->modify( $plu_min.$seconds.' seconds' );
      return $this->dates->format('s');  
  }
  
   
   public function set_dates($praca){
         $this->format = $praca;
		 $jj = preg_split('/[-: ]/', $this->format);
		 if(!empty($jj[2])){
		  		 $this->years =$jj[0];
				 $this->month =$jj[1];			 
				 $this->day   =$jj[2];
				  }
		if(!empty($jj[3])){  
				 $this->hour  = $jj[3];
				 $this->minutes =$jj[4];
				 $this->seconds =$jj[5]; 
				 }
	   }
   
       public function format_mysql(){
	##  format MySQL  ##
      return date('Y-m-d H:i:s', $this->format);
  }
  
  public function format_unix(){
	##  format unixsowy  ##
      return strtotime($this->format);  
  }
   
   
      public function get_years(){ 
		  		return $this->years; 
	   }
   
   public function get_month(){
		  		return $this->month;
	   }
	   
	public function get_day(){ 
		  		return $this->day;  
	   }

	   
	 public function get_hour(){
		  		return $this->hour; 
	   }

	 public function get_minutes(){ 
		  		return $this->minutes; 
	   }

	 public function get_seconds(){ 
		  		return $this->seconds;  
	   }  
   
   
  
	public function data_modifi(){
	 return  $this->dates->setDate($this->years, $this->month, $this->day); 
	   }
	   
	 public function time_modifi(){
	   return $this->dates->setTime($this->hour, $this->minutes, $this->seconds); 
	  }
	  
	  ## data mysql 2015-01-03 08:09:11 ##
	  ## parametr nazwy skrócone czy czałe ##
	 public function data_all($cale_nazwy=1){

   if($cale_nazwy === 1){
      $dni = array('niedziela','poniedziałek','wtorek','sroda','czwartek','piątek','sobota');

	  $miesiace = array(1 => 'styczeń',2 => 'luty',3 => 'marzec',4 => 'kwiecień',5 => 'maj',6 => 'czerwiec',7 => 'lipiec',
		              8 => 'sierpień',9 => 'wrzesień',10 => 'październik',11 => 'listopad',12 => 'grudzień');
   
   }else{
   	$dni = array('nie','pon','wto','sro','czw','pią','sob');

	$miesiace = array(1 => 'sty',2 => 'lut',3 => 'mar',4 => 'kwi',5 => 'maj',6 => 'cze',7 => 'lip',
		              8 => 'sie',9 => 'wrz',10 => 'paź',11 => 'lis',12 => 'gru');
   }
	   $czas = ' '.$dni[$this->dates->format('w')];
	   $czas.= ' '.$this->dates->format('d');
	   $czas.= ' '.$miesiace[$this->dates->format('n')];
	   $czas.= ' '.$this->dates->format('Y');
	
       return $czas .= ' r. Godzina '.$this->dates->format('H:i:s');
	} 
	
	
	## sprawdzamy ile dni pozostało ##
	## $param może być 1 albo 2 albo  albo 3 albo 123 albo 12 albo 13 albo 23
    ## Jeżeli data end jest pusta to liczy do obecnego czasu ##

    public function set_date_start_end($param, $data_end){

	$data_end = strtotime($data_end);
	
 if(in_array(1,$param)){
    $zostalo_dni = ' Dni '.floor(($data_end - $this->format_unix())/ 86400);
 }else{$zostalo_dni=null;}
 
 if(in_array(2,$param)){
    $zostalo_tygodni = ' Tygodni '.floor(($data_end - $this->format_unix())/ 604800);
 }else{$zostalo_tygodni=null;}
 
 if(in_array(3,$param)){
     $zostalo_miesiecy = ' Miesięcy '.floor(($data_end - $this->format_unix())/ 2592000);
   }else{$zostalo_miesiecy=null;}
   
   if(in_array(4,$param)){
    $zostalo_lat =' Lat '.floor(($data_end - $this->format_unix())/ 31104000);
   }else{$zostalo_lat=null;}

   $this->data_czas = 'Pozostało '. $zostalo_dni.$zostalo_tygodni.$zostalo_miesiecy.$zostalo_lat;
   	 
}

public function set_date_time_start_end($param, $data_end){

      $data_end = new DateTime($data_end);
     
         $diff  = $this->dates->diff($data_end);


 if(in_array(1,$param)){
    $zostalo_dni = ' Dni '.floor($diff->format("%d"));
 }else{$zostalo_dni=null;}
  
 if(in_array(2,$param)){ 
    $zostalo_tygodni = ' Tygodni '.floor(strtotime($diff->format("%Y-%m-%d"))/604800);
 }else{$zostalo_tygodni=null;}
  
 if(in_array(3,$param)){
     $zostalo_miesiecy = ' Miesięcy '.floor($diff->format("%m"));
   }else{$zostalo_miesiecy=null;}
    
   if(in_array(4,$param)){ 
    $zostalo_lat =' Lat '.floor($diff->format("%Y"));
   }else{$zostalo_lat=null;} 

   if(in_array(5,$param)){
    $zostalo_godzn =' Godzin '.floor($diff->format("%H")); 
   }else{$zostalo_godzn=null;} 
    
   if(in_array(6,$param)){ 
    $zostalo_minut =' Minut '.floor($diff->format("%i"));
   }else{$zostalo_minut=null;}
    
   if(in_array(7,$param)){
    $zostalo_sekund =' Sekund '.floor($diff->format("%s"));
   }else{$zostalo_sekund=null;}
   //$this->data_time_czas =  $diff->format("%Y-%m-%d %H:%I:%S");
     $this->data_time_czas = 'Pozostało '. $zostalo_dni.$zostalo_tygodni.$zostalo_miesiecy.$zostalo_lat.$zostalo_godzn.$zostalo_minut.$zostalo_sekund;
}

   public function get_date_time_start_end(){ 
         return $this->data_time_czas; 
     }
	 public function get_date_start_end(){
	     return $this->data_czas;
	 }
}

index.php



 $KK = new  modify_date_and_time();
		## czas start normalny ##
		$KK->set_dates('2015-01-03 08:09:11');
		## Co pokazać 1 = dni 2 = tygodnie 3 = Miesiące 4 = lata ##
		$param=array(1,2,3,4,5,6,7);
		                       ## czas koniec##
		     $KK->set_date_start_end($param, '2018-01-03 08:09:11');
		echo $KK->get_date_start_end().'
';
		
               ##  Cała data i czas ##
               $KK->set_date_time_start_end($param, '2018-01-03 08:09:11'); 
          echo $KK->get_date_time_start_end().'
'; 


	     ## Rok nie zmodyfikowany ##  
     echo $KK->get_years().'
'; 
     ## Miesuiąc nie zmodyfikowany ##
     echo $KK->get_month().'
';
	 ## Dzień nie zmodyfikowany ##
    echo $KK->get_day().'
';
     ##Godzina nie zmodyfikowana ##
    echo $KK->get_hour().'
';
     ## Minuty nie zmodyfikowane ##
    echo $KK->get_minutes().'
';
      ## Sekundy nie zmodyfikowane ##
   echo $KK->get_seconds().'
';

		## Cała data z nazwami dni i miesięcy ##
		 echo $KK->data_all($cale_nazwy=1).'
';
		
	## czas mysql zmienia na uniksowy  ## 
      echo  $KK->format_unix().'
';
		
 ## Date ##
 $KK->data_modifi();
 $year=8;
 $month=2;
 $day =19;
 
  echo $KK->data_year('-', $year);
  echo $KK->data_month('+', $month);
  echo $KK->data_day('-', $day);
 
 ## time ##
 $KK->time_modifi();
 $hour=10;
 $minute=5;
 $seconds= 10;
 
  echo $KK->time_hour('+', $hour);
  echo $KK->time_minute('-', $minute);
  echo $KK->time_seconds('+', $seconds);
    
	
	## czas uniksowy zmienia na mysql  ## 
	$unix = new  modify_date_and_time();
	$unix->set_dates('1420268951');
    echo '
'.($unix->format_mysql()).'
';




A to efekt końcowy:


 

 

Używamy cookies i podobnych technologii m.in. w celach: świadczenia usług, reklamy, statystyk. Korzystanie z witryny bez zmiany ustawień Twojej przeglądarki oznacza, że będą one umieszczane w Twoim urządzeniu końcowym. Pamiętaj, że zawsze możesz zmienić te ustawienia. To find out more about the cookies we use and how to delete them, see our privacy policy.

I accept cookies from this site.

EU Cookie Directive Module Information