konto usunięte

Temat: Przedziały czasowe

Witam serdecznie,
potrzebuję zrobić skrypt który będzie wyświetlał informację o błędzie w przedziałach czasowych.

Mam taki kod:

$data = date("Y-m-d");
$godzinateraz = date("G");
$terazmamy = "$data $godzinateraz:00:00";


$przedzial1 = "2011-10-12 15:00:00"; // data koniec
$przedzial2 = "2011-10-10 11:00:00"; // data początek

if (($terazmamy < $przedzial1) && ($terazmamy > $przedzial2)){ echo "sklep czynny"; } else echo "sklep nieczynny";



Zmienne $przedzial1 i $przedzial2 są generowane dynamicznie przez użytkownika w panelu admina i oznaczają godziny "nieczynne".
Skrypt ma wyświetlić na podstawie aktualnej datyi godziny informację czy sklep jest czynny, czy też nie w aktualnym momencie...

Macie może pomysł jak to zrobić?? :) Bo ten mój warunek się nie sprawdza w każdej sytuacji :(

Łukasz

konto usunięte

Temat: Przedziały czasowe

Nie lepiej użyć funkcję time() ? Operując na timestamp będziesz mógł dodawać, odejmować i porównywać daty z dokładnością co do sekundy.
Tomasz Zadora

Tomasz Zadora programuję

Temat: Przedziały czasowe

Oprócz time zainteresuj się też funkcją strtotime, może znacznie ułatwić życie - a przynajmniej programowanie w PHP tego typu rzeczy.Tomasz Zadora edytował(a) ten post dnia 10.10.11 o godzinie 18:04

konto usunięte

Temat: Przedziały czasowe

Łukasz Wójcik:

Macie może pomysł jak to zrobić?? :) Bo ten mój warunek się nie sprawdza w każdej sytuacji :(

W jakiej się nie sprawdza?


$terazmamy = time();

$przedzial1 = strtotime("2011-10-12 15:00:00"); // data koniec
$przedzial2 = strtotime("2011-10-10 11:00:00"); // data początek

if (($terazmamy < $przedzial1) && ($terazmamy > $przedzial2)){ echo "sklep czynny"; } else echo "sklep nieczynny";



Zmodyfikowałem Twój kod, aby działał porządniej, ale tak *** przykładu dawno nie widziałem na forum:
- czemu niby początek jest po końcu?
- czemu zamiast $now lub choćby $teraz używasz dziwacznego $terazmamy (co to za wyraz "terazmamy")
- czemu punkt w czasie nazywasz przedziałem?
- czemu blok ifa objąłeś klamrami, a else nie?
- czemu operujesz na stringach, a nie liczbach?Łukasz K. edytował(a) ten post dnia 10.10.11 o godzinie 18:14

konto usunięte

Temat: Przedziały czasowe

Bardzo mnie zaciekawiła konstrukcja (pomijając to, że nie ma ona tutaj racji bytu)


$data = date("Y-m-d");
$godzinateraz = date("G");
$terazmamy = "$data $godzinateraz:00:00";


Nie można było

$terazmamy = date("Y-m-d G:00:00");


Całość powinna wyglądać tak:


$start = strtotime($start);
$end = strtotime($end);
$now = time();

if($start <= $now && $end >= $now) {
// w przedziale
}
else {
// poza przedzialem
}


@Dariusz - nie okłamuj chłopaka, można też pracować na obiekcie DateTime :)

konto usunięte

Temat: Przedziały czasowe

Michał Wachowski:
Bardzo mnie zaciekawiła konstrukcja (pomijając to, że nie ma ona tutaj racji bytu)


$data = date("Y-m-d");
$godzinateraz = date("G");
$terazmamy = "$data $godzinateraz:00:00";


Nie można było

$terazmamy = date("Y-m-d G:00:00");


Całość powinna wyglądać tak:


$start = strtotime($start);
$end = strtotime($end);
$now = time();

if($start <= $now && $end >= $now) {
// w przedziale
}
else {
// poza przedzialem
}


@Dariusz - nie okłamuj chłopaka, można też pracować na obiekcie DateTime :)

Tylko po co Ci cały obiekt żeby zrobić tak prostą operację :P Nie mówiąc o tym że nie trzeba mącić komuś w głowie. Najprostsze rozwiązania są na ogół najlepsze.

konto usunięte

Temat: Przedziały czasowe

Czy ja piszę, że trzeba DateTime użyć tutaj? Nie.
Wytykam (tak, czepiam się) nieścisłość.

Niech Łukasz sam wybierze w czym będzie mu lepiej - jego skrypt, jego decyzje.
Ariel Zarabski

Ariel Zarabski Mgr inż
Elektryk-Automatyk

Temat: Przedziały czasowe

Niestety algorytm nie działa w programowaniu gdzie zakres godzinowy jest od 00 do 23

IF #godzina_zalaczania <= #godzina_plc AND #godzina_wylaczania >= #minuty_plc
THEN #taryfa_noc := TRUE ;// Statement section IF
ELSE #taryfa_noc := FALSE ;
END_IF;

Temat: Przedziały czasowe

Ariel Z.:
Niestety algorytm nie działa w programowaniu

A w jakim języku ? Bo w PHP na pewno działa.
Ariel Zarabski

Ariel Zarabski Mgr inż
Elektryk-Automatyk

Temat: Przedziały czasowe

sterowniki PLC
zegara mamy w formie pełna godzina 00 h, 01, 02h, ....., 22h, 23h,
problem jest w wartościach 1 do 4

Temat: Przedziały czasowe

A co to ma wspólnego z PHP ?
Ariel Zarabski

Ariel Zarabski Mgr inż
Elektryk-Automatyk

Temat: Przedziały czasowe

zagadnienie to zagadnienie, narzędzie mniej istotne:)

Temat: Przedziały czasowe

Ariel Z.:
zagadnienie to zagadnienie, narzędzie mniej istotne:)

Tak samo jak pilotowanie szybowca i wahadłowca kosmicznego - w obu przypadkach masz stery a to czym sterujesz to mało istotne :)Ten post został edytowany przez Autora dnia 26.08.14 o godzinie 17:43

Temat: Przedziały czasowe

Ariel Z.:
zagadnienie to zagadnienie, narzędzie mniej istotne:)

No właśnie tak się składa, że bardzo istotne.
Równie dobrze mógłbyś mieć pretensje, że podane kody źródłowe nie zadziałają w Pascalu :)

W PHP zadziała a to grupa o PHP. Szach mat.
Tomasz L.

Tomasz L. informatyk

Temat: Przedziały czasowe

Ariel Z.:
IF #godzina_zalaczania <= #godzina_plc AND #godzina_wylaczania
> >= #minuty_plc
godzina>minuuta?
to nie zadziała
w PLC musisz jeszcze porównywać odpowiednie formaty liczb np. float, integer itd.
w niektorych godzine mozesz dostać jako 'string'

jezeli nie pomoglo to idź do konkretnego forum dla Twojego PLC bo tam tez co PLC to bywa roznie.
Ariel Zarabski

Ariel Zarabski Mgr inż
Elektryk-Automatyk

Temat: Przedziały czasowe

podziękowania dla kolegi Markos80.
w PHP też zadziała, zadziała w każdym języku który obsługuje funkcję IF
głownie chodziło o złożenie podstawowej logiki w IF dla tego narzędzie mniej ważne.

IF (((#godzina_zalaczania <= #godzina_wylaczania) AND (#godzina_plc >= #godzina_zalaczania) AND (#godzina_plc <= #godzina_wylaczania)) OR ((#godzina_zalaczania > #godzina_wylaczania) AND ((#godzina_plc >= #godzina_zalaczania) OR (#godzina_plc <= #godzina_wylaczania)))) THEN
IF (NOT #taryfa_noc_zal) THEN
#taryfa_noc_zal := true;
#taryfa_noc_wyl:= false;
END_IF;
ELSE
IF (NOT #taryfa_noc_wyl) THEN
#taryfa_noc_zal := false;
#taryfa_noc_wyl := true;
END_IF;
END_IF;Ten post został edytowany przez Autora dnia 27.08.14 o godzinie 13:05



Wyślij zaproszenie do