![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 11 Pomógł: 0 Dołączył: 5.10.2007 Ostrzeżenie: (0%) ![]() ![]() |
Witam.
Mam kłopot z obliczeniami na dacie. Otóż mam w bazie zapisaną datę początkową oraz częstotliwość akcji wyrażoną w dniach. Skrypt musi zwracać termin kolejnej akcji w odniesieniu do aktualnej daty. Dzięki wykorzystaniu PHP 5.3 posiadam taki oto kod:
Niestety zwraca on tylko datę pierwszej akcji, a nie tą najbliższą. Kompletnie nie znam się na klasach, a jak próbowałem rozwiązać problem za pomocą zamiany daty na czas UNIXa, odejmowaniu, dzieleniu i mnożeniu reszty przez bóg-wie-co to pojawiały się błędy w obliczeniach... Serdecznie proszę o pomoc w temacie. Ten post edytował anty 10.03.2013, 23:53:03 |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 4 655 Pomógł: 556 Dołączył: 17.03.2009 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
Pokaż lepiej co przekazujesz do konstruktorów
![]() -------------------- Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 11 Pomógł: 0 Dołączył: 5.10.2007 Ostrzeżenie: (0%) ![]() ![]() |
Chodzi o to, żeby skrypt zwaracał datę następnej iteracji, czyli w tym przypadku powinno być 2013-03-13 (bo dzisiaj mamy 2013-03-11). Ten post edytował anty 11.03.2013, 09:43:59 |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 142 Pomógł: 24 Dołączył: 30.03.2009 Skąd: Rokitno Szlacheckie Ostrzeżenie: (0%) ![]() ![]() |
coś mi się wydaje że powinieneś podawać datę w formacie $devices[$i]['date_on'].' 00:00:00'
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 165 Pomógł: 20 Dołączył: 2.03.2006 Ostrzeżenie: (0%) ![]() ![]() |
-------------------- |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 11 Pomógł: 0 Dołączył: 5.10.2007 Ostrzeżenie: (0%) ![]() ![]() |
Czyli i tak muszę odjąć od obecnej daty datę uruchomienia, a następnie obliczyć w którym dniu cyklu się znajduję...
|
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 142 Pomógł: 24 Dołączył: 30.03.2009 Skąd: Rokitno Szlacheckie Ostrzeżenie: (0%) ![]() ![]() |
zawsze możesz pobawić się mktime i dodać 3600*24*ilość_dni
|
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 11 Pomógł: 0 Dołączył: 5.10.2007 Ostrzeżenie: (0%) ![]() ![]() |
Probowałem ogarnąć to prymitywnym sposobem, ale pojawiały się błędy w wyliczaniu kolejnej daty - czasami działało, a czasami nie. Nie wiem, być może problemem była reszta z dzielenia która nie zawsze wychodziła na tyle ładna by po przemnożeniu na koniec uzyskać "ładny" wynik?
Pomysł na powyższy algorytm pewnie jest niedoskonały, ale próbuję... Ten post edytował anty 11.03.2013, 12:53:59 |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 879 Pomógł: 189 Dołączył: 14.06.2006 Skąd: Bytom Ostrzeżenie: (0%) ![]() ![]() |
Coś takiego powinno zadziałać:
|
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 4 655 Pomógł: 556 Dołączył: 17.03.2009 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
Masz tutaj kawałek kodu:
Baw się ![]() -------------------- Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP |
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 11 Pomógł: 0 Dołączył: 5.10.2007 Ostrzeżenie: (0%) ![]() ![]() |
Dziękuję za powyższe odpowiedzi. Niestety miałem pewne problemy z przedstawionymi fragmentami kodu, ale jakoś udało mi się rozgryźć to inaczej:
Może komuś się przyda ![]() |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 05:18 |