![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 217 Pomógł: 1 Dołączył: 26.05.2011 Skąd: Moon Ostrzeżenie: (10%) ![]() ![]() |
Od pewnego czasu usiluje zbudowac dodatkowy element majacy za zadanie obliczac na podstawie wprowadzonych informacji czas pracy.
W excell'u jest to banalnie proste czego nie moge powiedziec o PHP. Dlatego pilnie potrzebuje wsparcia, podpowiedzi jak to zrobic. Interesuje mnie obliczanie czasu wg takich kryteriow: dd/mm/rr gg:mm czas rozpoczecia pracy czas zakonczenia pracy w wyniku obliczen chcialbym uzyskac: calkowity czas pracy w postaci hh:mm niby nic trudnego ale kiedy zaczyna sie prace jednego dnia a konczy drugiego pojawia sie problem. Jesli zechcial by ktorys z szanownego grona podpowiedziec jak najprosciej i najefektywniej zrobic form do tego bylbym niezmiernie wdzieczny. Pozdrawiam phpamator z tego formularza przesylam dane. |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 156 Pomógł: 31 Dołączył: 23.02.2009 Skąd: Sanok Ostrzeżenie: (0%) ![]() ![]() |
Zainteresuj się http://www.php.net/manual/pl/class.datetime.php szczególnie metodą DateTime::diff nie będziesz miał żadnych problemów z operacjami o których wspomniałeś.
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 217 Pomógł: 1 Dołączył: 26.05.2011 Skąd: Moon Ostrzeżenie: (10%) ![]() ![]() |
Dziękuję za wskazówkę, udaję się więc niezwłocznie we wskazane miejsce celem pobrania odpowiedniej wiedzy.
Pozdrawiam P.S. Jesli w międzyczasie ktoś jednak zechciałby klepnąć jakiś prosty skrypcik jako poglądowy/edukacyjny ... byłbym wdzięczny. Znalazłem tutaj: http://pl.php.net/manual/pl/class.datetime.php, podany przez szanownego kolegę link nie wskazał wymaganych informacji ![]() Poczytam więc, może się czegoś nauczę ![]() Jako amator/początkujący nie kumam jeszcze wielu zagadnien ![]() Pozdrawiam |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 157 Pomógł: 3 Dołączył: 15.06.2009 Ostrzeżenie: (0%) ![]() ![]() |
z tego co pamiętam to ja robiłem tak:
data zarówno rozpoczęcia jak i zakończenia pracy zmieniamy z formatu dd:mm:rrrr hh:mm:ss na uniksową czyli wyrażoną w liczbie sekund potem od daty zakończenia odejmujemy datę rozpoczęcia. Podany wynik jest w sekundach wiec dzielimy to przez 86400 uzyskany wynik jest podany w dniach jeżeli chciałeś to mieć w godzinach i minutach to robisz to inaczej nie dzielisz tego przez 86400 tylko przez 3600 wtedy wynik z dzielenia to ilość godzin jaka Cię interesuje a reszta z dzielenia (musisz ją podzielić przez 60 to minuty, reszta tej reszty to sekundy) większej filozofii tu nie ma potrzebne Ci jedynie funkcje operujące datą mktime date itp. no i wiedza z zakresu dzielenia mnożenia odejmowania ;P |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 156 Pomógł: 31 Dołączył: 23.02.2009 Skąd: Sanok Ostrzeżenie: (0%) ![]() ![]() |
Przykład użycia
![]()
Ten post edytował Smertius 10.08.2011, 16:26:17 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 217 Pomógł: 1 Dołączył: 26.05.2011 Skąd: Moon Ostrzeżenie: (10%) ![]() ![]() |
Witam i dziękuję,
Działa, wykorzystałem ale nie jestem do końca zadowolony. Muszę zmienić na nieco inny sposób liczenia - automatyczny W PHP może to być problem, dlatego spróbuję to zrobić używając Javascript. Chciałbym uzyskać efekt następujący: Wpisuję date i godzinę rozpoczęcia pracy do jednego <INPUT>'a i datę i godzinę zakończenia pracy do drugiego w efekcie czego po automatcznym dokonaniu obliczen dostaje w polu czas pracy ilość godzin i minut. Wszelkie podpowiedzi mile widziane - uczę się szybko - jutro pewnie już będę wiedział jak to zrobić ![]() pozdrawiam Do: Maciek1705 Nie chciałem niepotrzebnie komplikować sobie życia choć nie wygląda to wcale tak źle i faktycznie chyba było by całkiem dobrze w ten sposob liczyc godziny. Zmęczę temat jutro, może coś z tego wypocę. Pozdrawiam |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 1 495 Pomógł: 245 Dołączył: 1.07.2009 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
No a nie byłoby prościej obliczyć różnicy czasów po przeróbce ich na unixowy za pomocą strtotime?
Jeśli coś pochrzaniłem czy nie takie było Twoje pytanie to sorx. Przyznaje, że nie zapoznałem się zbyt dokładnie z resztą postów oprócz pierwszego. Ten post edytował sadistic_son 12.08.2011, 00:01:37 -------------------- Uśpieni przez system, wychowani przez media,
Karmieni zmysłami, próżnymi żądzami... -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- Jesteś zbyt leniwy, żeby się zarejestrować? Ja jestem zbyt leniwy aby Ci pomóc! -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 217 Pomógł: 1 Dołączył: 26.05.2011 Skąd: Moon Ostrzeżenie: (10%) ![]() ![]() |
Witam,
No faktycznie, nie wyglada to na zbyt skomplikowane uzywając funkcji strtotime. Pytanie: czy wykorzystujac ten sposob wprowadzenie daty i czasu w formacie dd-mm-rrrr gg:mm:ss nie spowoduje jakiegoś problemu ? Jeśli tak (może być konieczne podanie także dnia rozpoczęcia pracy ponieważ zdarza sie ze pracownik startuje przed polnoca jednego dnia a konczy w poludnie nastepnego) to konieczne bedzie rozszerzenie dzialania na dni, miesiace i lata. Chyba, ze strtotime poradzi sobie z tym bezpośrednio. Może myślę trochę "dookoła" ale nie jest mi znany jeszcze ten temat wiec wolę zapytać zorientowanych ![]() Pozdrawiam phpamator |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 28 Pomógł: 6 Dołączył: 12.08.2011 Ostrzeżenie: (0%) ![]() ![]() |
cześć - otrzymane z formularza zmienna przepuszczasz przez strtotime();
odejmujesz późniejszą od wcześniejszej i masz ilość sekund. longinus Ten post edytował longinus_torwaldzki 12.08.2011, 12:13:57 |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 1 495 Pomógł: 245 Dołączył: 1.07.2009 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
Chyba, ze strtotime poradzi sobie z tym bezpośrednio. Poradzi sobie. strtotime przerobi większość dat i czasów na unixowy czas. Nawet zdania typu "next Monday" czy "first day last month" nie stanowią problemu dla tej funkcji.-------------------- Uśpieni przez system, wychowani przez media,
Karmieni zmysłami, próżnymi żądzami... -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- Jesteś zbyt leniwy, żeby się zarejestrować? Ja jestem zbyt leniwy aby Ci pomóc! -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 217 Pomógł: 1 Dołączył: 26.05.2011 Skąd: Moon Ostrzeżenie: (10%) ![]() ![]() |
Hej,
No faktycznie, porzdził sobie bez problemu. Moja tabelka dziala jak nalezy, nie zmienia to jednak faktu ze musze to teraz przerobic i uzbroic w funkcje zapisywania wynikow do bazy. Ale to juz nie problem. Jeszcze chcialbym aby liczenie odbywalo sie od razu w chwili wprowadzania danych do inputów. Z zebranych informacji wynika ze spokojnie Javascript poradzi sobie z tym tematem, jeśli więc ma ktoś doświadczenie i posługuje sie Javascriptem ... Chętnie zappoznam sie z czyms takim. Pozdrawiam |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 24.07.2025 - 17:15 |