fundacja tvn joomla-cms.com.pl
A+ A A-

Class modify date and time

  • Kategoria: Class
  • Opublikowano: sobota, 03, styczeń 2015 14:23
  • Super User
  • Odsłony: 7233

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()).'
';
 
 
 
<span style="font-size: 12pt;"><span style="color: #c0c0c0;">A to efekt końcowy:</span>
 
 
</span>

 
 
 

 

 Pozycjonowanie-Joomla, seo-joomla Tworzenie-Sitemap-joomla, TG-Chmura-Tagów, rs-rules-security Admin-Login-Security, joomla Licencja-Drupal, Licencja-ZenCart, Licencja-GPL2, Licencja-GPL3 Creative-Commons-License, joomla-2.5.x Kalendarz-Celtycki data-zodiak-data-majowie, moduł-GA-Gadu-gg, Moduł-Lotto-joomla K2-joomla Moduł-Kodownik-joomla kontakt-admin-3-pl Moduł-miłość-joomla Moduł-minutnik-joomla Google-Gadżet-strona-www Moduł-Multi-AnalogClock-joomla Grafika-Wektorowa-joomla Pascal-podstawy Pascal-instrukcja-if Pascal-pętla-for Pascal-Pętla-white-Repet Pascal-Instrukcja-Case Pascal Pascal-record Pascal-Tablice-(Macierze) Kolory-w-Pascalu Systemy-Liczbowe-10-16-8 Pak-top10-głosowanych-jQuery Waga-Bmi BF-Bear-Form Joomla+2.5+captcha+google BSD joomla, MP3 Creating, SEO, Admin tg RS BF The Celtic Forever Création Erstellen Toujours Immer Multi Contact-Admin-3-EN Contact-Admin-3-fr Contact-Admin-3-DE Open-Software-License-v.3.0-(OSL-3.0) System Interfejsy Mozilla joomla-metadane, seo-katalogi, wymiana Slider aukcjoner, Informator Osiemnaście CiastkoPl sem, Class Class-PDO-session login, registerUserClass, index PHP PDO, Class-ResponsiveCss zarabiarka-allegro Pogodynka Pogodynka Praca-Programisty Praca Funkcja-if Special+Arguments Simple-Captchta Jquery, Od 2 Konfiguracja 4.Instalacja 5.Konfiguracja 6.Instalacja 7.Konfiguracja 8.Metadane 9.Optymalizacja 10.Ciasteczka 11.System 12.Diagnostyka 13.Sesja Klasa Książka responsive Uniwersal Dodatek GoogAd.v1.4-polish-utf-8 Error Cooki Funkcje Linki Google Kompresja pdf, Dynamiczne template wycena Twoja Separation reklama ssd, bezpieczeństwo wzorce rekrutacja Zastosowanie Urządzenia Portale chat, dyski Platformy QUIZ 

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