Strict Standards: Non-static method Advanced_Permalinks::get() should not be called statically in /blog/wp-content/plugins/advanced-permalinks/advanced-permalinks.php on line 825

Strict Standards: call_user_func_array() expects parameter 1 to be a valid callback, non-static method GoogleSitemapGeneratorLoader::Enable() should not be called statically in /blog/wp-includes/plugin.php on line 123

Warning: call_user_func_array() expects parameter 2 to be array, null given in /blog/wp-includes/plugin.php on line 123
[PHP] Jak stworzyć prostą funkcję do obliczania różnicy pomiędzy datami? » Porady PHP » egrafik.pl
BAZA WIEDZY
KURSY
Bazy danych w PHP
Kurs AdvancedAJAX
Kurs ASP
Kurs ASP.NET
Kurs C++
Kurs CSS
Kurs HTML
Kurs HTML drugi
Kurs JavaScript
Kurs MySQL
Kurs PHP
Kurs RSS
Kurs XHTML
Obiekty DOM
MANUALE
CSS1 - W3C
DOM - w budowie
PHP 2005
PHP 2006
Wyrażenia regularne
SHOUTBOX
STAT
Online: 29 | UU: 554

Strict Standards: Resource ID#196 used as offset, casting to integer (196) in /forum2/db/mysql4.php on line 223

Strict Standards: Resource ID#196 used as offset, casting to integer (196) in /forum2/db/mysql4.php on line 224
[PHP] Jak stworzyć prostą funkcję do obliczania różnicy pomiędzy datami?
Porady PHP | 17 luty 2009 | Wizyt: 113981

Strict Standards: Only variables should be assigned by reference in /blog/wp-includes/post.php on line 114

Strict Standards: Only variables should be assigned by reference in /blog/wp-includes/post.php on line 114

Strict Standards: Only variables should be assigned by reference in /blog/wp-includes/post.php on line 114

Strict Standards: Only variables should be assigned by reference in /blog/wp-includes/post.php on line 114

Strict Standards: Only variables should be assigned by reference in /blog/wp-includes/post.php on line 114

Strict Standards: Only variables should be assigned by reference in /blog/wp-includes/post.php on line 114

Strict Standards: Only variables should be assigned by reference in /blog/wp-includes/post.php on line 114

Strict Standards: Only variables should be assigned by reference in /blog/wp-includes/post.php on line 114

Deprecated: Function eregi() is deprecated in /blog/wp-content/plugins/tpbc.php on line 96

W tym artykule zajmiemy się stworzeniem drobnej lecz bardzo przydatnej funkcji umożliwiającej obliczanie różnicy pomiędzy datami.

Różnica ta może być wyrażona w różnych jednostkach czasowych. Np. możemy obliczyć różnicę w dniach, godzinach, minutach itd.

Zapis funkcji:

Kod: php

<?php
// funkcja obliczajaca roznice dat
function roznica_data($data_poczatek, $date_koniec, $jednostka_czasu="sekund")
{
 $tablica = array(minut=>60, godzin=>3600, dni=>86400, sekund=>1);
 return "Roznica miedzy data: ".$data_poczatek." a data ".$date_koniec." wynosi ".round(((strtotime($date_koniec) - strtotime($data_poczatek)) / $tablica[$jednostka_czasu]))." ".$jednostka_czasu;
}
?>

Powyższa funkcja pobiera jako argumenty datę początkową, datę końcową oraz jednostkę czasu, wg której ma być obliczona różnica pomiędzy datami. Jeżeli trzeci argument nie zostanie podany, różnica podana zostanie w sekundach. Zmienna $tablica przypisuje poszczególnym wariantom, z których każdy może być użyty jako 3 argument naszej funkcji, odpowiednie liczby, odpowiadające liczbie sekund w danej jednostce czasu.

Aby dokładniej zrozumieć działanie funkcji, należy przyjrzeć się działaniu zapisu strtotime(). Zamienia on datę w formacie rrrr-mm-dd na formę unixową, określającą liczbę sekund, które minęły od 1 stycznia 1970 roku. W przykładzie obie daty, zarówno początkowa, jak i końcowa, zamieniana jest na formę unixową. Zatem różnica pomiędzy datą końcową w formacie unixowym, a datą początkową również w formacie unixowym, wyznacza różnicę pomiędzy tymi datami w sekundach. Aby różnicę podać w innej jednostce czasu, należy różnicę w sekundach podzielić przez odpowiednią wartość. Np. dzieląc przez 60 otrzymamy różnicę w minutach, dzieląc przez 3600, różnicę w godzinach itd.

Jako trzeci argument można podać jedną z trzech możliwości, określającą w jakiej jednostce czasu ma być pokazywana różnica. Możliwe warianty to: "minut", "godzin", "dni". Funkcję można rozszerzyć o różnicę w miesiącach, latach itd.

Wywołanie funkcji:

Kod: php

<?php
// wyswietlanie roznicy dat
echo roznica_data("2008-10-1", "2008-10-2", "minut")."<br />";
echo roznica_data("2008-10-1", "2008-10-2", "godzin")."<br />";
echo roznica_data("2008-10-1", "2008-10-2", "dni")."<br />";
?>

Cały kod:

Kod: php

<?php
// funkcja obliczajaca roznice dat
function roznica_data($data_poczatek, $date_koniec, $jednostka_czasu="sekund")
{
 $tablica = array(minut=>60, godzin=>3600, dni=>86400, sekund=>1);
 return "Roznica miedzy data: ".$data_poczatek." a data ".$date_koniec." wynosi ".round(((strtotime($date_koniec) - strtotime($data_poczatek)) / $tablica[$jednostka_czasu]))." ".$jednostka_czasu;
}

// wyswietlanie roznicy dat
echo roznica_data("2008-10-1", "2008-10-2", "minut")."<br />";
echo roznica_data("2008-10-1", "2008-10-2", "godzin")."<br />";
echo roznica_data("2008-10-1", "2008-10-2", "dni")."<br />";
?>

Autor: Adam Suchowski

nowe Porady PHP » zobacz wszystkie
Dodaj komentarz









 
| | | |
Copyright © 2006-2013 egrafik.pl | Kontakt | Reklama | Projekty domów
jocker