Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Dodawanie dni do daty
anty
post
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:

  1. //$devices[$i]['date_on'] - data początkowoa
  2. //$devices[$i]['freq'] - częstotliwość powtórzeń
  3. $dateOn = new DateTime($devices[$i]['date_on']);
  4. $frequency = new DateInterval('P' . $devices[$i]['freq'] . 'D');
  5. $dateOn->add($frequency);
  6. $e = $dateOn->format('Y-m-d');


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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
anty
post
Post #2





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:

  1. //dd - dzisiejsza data
  2. //instal_date_marker - data instalacji w znaczniku czasu
  3. //freq_marker - częstotliwość odwiedzin w znaczniku czasu
  4. while ($instal_date_marker+$freq_marker*$n<$dd)
  5. {
  6. $new_date=date("Y-m-d", $instal_date_marker+$freq_marker*$n);
  7. $n++;
  8. }
  9. $new_date=date("Y-m-d", $instal_date_marker+$freq_marker*$n);


Może komuś się przyda (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 15.10.2025 - 15:13