Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Ostatnio piątek każdego miesiąca, Skrypt odliczający czas..
lewin
post 12.03.2008, 09:47:05
Post #1





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 13.02.2005

Ostrzeżenie: (0%)
-----


Mam skrypt, który odlicza czas do wybranej daty..
Jak zmodyfikować poniższy skrypt, aby automatycznie odliczał czas do każdego, ostatniego piątku miesiąca bez wprowadzania manualnie daty?
  1. <script type="text/javascript">
  2. function CD(d,o,t,x){return[x=~~(t=(d-o)/864e5),x=~~(t=(t-x)*24), x=~~(t=(t-x)*60),~~((t-x)*60)]}
  3. function R(t){
  4. t=CD(new Date(2008,02,28,18,30,00),new Date());
  5. document.getElementById('costam').innerHTML='za '+t[0]+" dni, "+t[1]+" godzin, "+t[2]+" minut, "+t[3]+"sekund";
  6. if(!t[0]&&!t[1]&&!t[2]&&!t[3])document.getElementById('costam').innerHTML='MASA KRYTYCZNA';
  7. else setTimeout('R()',1e3);
  8. }
  9.  
  10. onload=function(){R();}
  11.  
  12. <div id="costam"></div>


Ten post edytował lewin 12.03.2008, 10:02:46
Go to the top of the page
+Quote Post
maziak
post 12.03.2008, 10:12:42
Post #2





Grupa: Zarejestrowani
Postów: 155
Pomógł: 17
Dołączył: 9.07.2007

Ostrzeżenie: (0%)
-----


Aby odliczac czas do jakiejs tam daty, trzeba naturalnie znac ta date, tutaj z pomoca przychodzi nam strtotime smile.gif

Żywcem z manuala wzięte :
  1. <?php
  2. $lastfriday=strtotime("last Friday",mktime(0,0,0,date("n")+1,1));
  3. //zwroci nam znacznik czasu ostatniego piatku biezacego miesiaca
  4. //dalej przekazujesz to do zmiennych JS jak Ci sie zywnie podoba
  5.  
  6. echo date('l F j, Y, g:i a',$lastfriday);
  7.  
  8. ?>


Ten post edytował maziak 12.03.2008, 10:15:42
Go to the top of the page
+Quote Post
lewin
post 12.03.2008, 11:19:23
Post #3





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 13.02.2005

Ostrzeżenie: (0%)
-----


Zmodyfikowalem skrypt wg. Twojej wskazowki, ale on zamiast odliczac to pokazuje date ostatniego piatku miesiaca. Jak uruchomic teraz odliczanie?
  1. <?php
  2. $lastfriday=strtotime("last Friday",mktime(0,0,0,date("n")+1,1));
  3.  
  4. echo date('Y,m,d,g,i',$lastfriday);
  5. ?>
  6.  
  7. <script type="text/javascript">
  8. function CD(d,o,t,x){return[x=~~(t=(d-o)/864e5),x=~~(t=(t-x)*24), x=~~(t=(t-x)*60),~~((t-x)*60)]}
  9. function R(t){
  10. t=CD(new Date(<? echo date('Y,m,d,g,i',$lastfriday); ?>),new Date());
  11. document.getElementById('costam').innerHTML='za '+t[0]+" dni, "+t[1]+" godzin, "+t[2]+" minut, "+t[3]+"sekund";
  12. if(!t[0]&&!t[1]&&!t[2]&&!t[3])document.getElementById('costam').innerHTML='OSTATNI PIATEK MIESIACA';
  13. else setTimeout('R()',1e3);
  14. }
  15.  
  16. onload=function(){R();}
  17. </script>
  18. <div id="costam"></div>
Go to the top of the page
+Quote Post
maziak
post 12.03.2008, 12:32:42
Post #4





Grupa: Zarejestrowani
Postów: 155
Pomógł: 17
Dołączył: 9.07.2007

Ostrzeżenie: (0%)
-----


Witaj, wciąłeś sekundy, ostatni parametr Date.
Teraz jak spojżysz do źródła, w przeglądarce, to faktycznie pokazuje 2008,02,28,00,00,00 czyli tak jak powinno być (jak brałeś godzinę z date() to pokazywało 12, czyli nic dobrego dla skryptu, jak mniemam). Nie liczy jednak dobrze, bo przecież to nie możliwe aby brakowalo nam jeszcze 47 dni. Jednak teraz problem leży raczej po stronie JS, wiec w tym Ci raczej, ze względu na moje braki w edukacji, nie pomogę.

  1. <?php $lastfriday=strtotime("last Friday",mktime(0,0,0,date("n")+1,1));
  2. ?>
  3.  
  4. <script type="text/javascript">
  5. function CD(d,o,t,x){return[x=~~(t=(d-o)/864e5),x=~~(t=(t-x)*24), x=~~(t=(t-x)*60),~~((t-x)*60)]}
  6. function R(t){
  7. t=CD(new Date(<?php echo date('Y,m,d',$lastfriday) ?>,00,00,00),new Date());
  8. document.getElementById('costam').innerHTML='za '+t[0]+" dni, "+t[1]+" godzin, "+t[2]+" minut, "+t[3]+"sekund";
  9. if(!t[0]&&!t[1]&&!t[2]&&!t[3])document.getElementById('costam').innerHTML='MASA KRYTYCZNA';
  10. else setTimeout('R()',1e3);
  11. }
  12.  
  13. onload=function(){R();}
  14.  
  15. <div id="costam"></div>


Ten post edytował maziak 12.03.2008, 12:37:14
Go to the top of the page
+Quote Post
lewin
post 12.03.2008, 12:53:23
Post #5





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 13.02.2005

Ostrzeżenie: (0%)
-----


Skrypt, ktory zaproponowales ruszyl i dziala, ale odlicza o jeden miesiac do przodu sad.gif
Spowodowane to jest tym, iz JS jako styczen przypisuje miesiac 00. Ktos moze pomoc w JS?

Ten post edytował lewin 12.03.2008, 13:00:15
Go to the top of the page
+Quote Post
webdice
post 12.03.2008, 15:35:52
Post #6


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




Popraw na:

  1. <?php
  2. $lastfriday=strtotime("last Friday",mktime(0,0,0,date("n"),1));
  3. ?>
Go to the top of the page
+Quote Post
maziak
post 12.03.2008, 15:45:57
Post #7





Grupa: Zarejestrowani
Postów: 155
Pomógł: 17
Dołączył: 9.07.2007

Ostrzeżenie: (0%)
-----


Jeżeli skrypt ma liczyć czas do ostatniego piatku aktualnego miesiaca, to jednak zostaw tak jak jest.

Przykładowo teraz mamy marzec, w marcu ostatni piątek to 28 dzień miesiąca a w lutym tego roku - 29.
Go to the top of the page
+Quote Post

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 Wersja Lo-Fi Aktualny czas: 19.07.2025 - 18:16