DevProTalk

DevProTalk (http://www.devprotalk.com/index.php)
-   PHP (http://www.devprotalk.com/forumdisplay.php?f=9)
-   -   DateTime and PHP (http://www.devprotalk.com/showthread.php?t=10940)

webarto 12. 04. 2012. 22:49

DateTime and PHP
 
Pozdrav,

Nisam puno radio sa DateTime, pa da čujem vaša iskustva oko slijedećeg...

Radnik ima radno vrijeme od 18:00 do 03:00 (9 sati razlike).

Pošto ovo zahvata 2 dana (nije bitno koja), potrebno je vratiti...

[ 0 => '6', 1 => '3' ]


Znači radi 6 sati u prvom danu, i 3 sata u drugom danu.

Kako biste vi ovo riješili? Language agnostic ako neko ima code :)

bluesman 13. 04. 2012. 00:04

Imaš puno funkcija koje rade matematičke operacije sa datumima, bitno je i koja ti je rezolucija potrebna, možda ti je najlakše sa timestamp-ovima

webarto 13. 04. 2012. 00:11

Ima puno, nažalost ja nisam pronašao u manualu, niti na prvoj stranici na Googleu :)

Ovo time_diff sam siguran da ima neko riješenje, ali ono što me zanimalo je ovaj shift_span... tnx Mister ;)
PHP kôd:

array(2) {
  [
0]=>
  
int(6)
  [
1]=>
  
int(3)


http://ideone.com/FR3x3

PHP kôd:

<?php
 
function shift_span($start$end)
{    
    
$time_diff time_diff($start$end);
    
$time_diff $time_diff['hours'];
 
    
# ignore minutes, safe after we calculated difference
    
$start = (int) $start;
    
$end = (int) $end;
            
    if(
$start $time_diff <= 24)
        return array(
$time_diff);
 
    return array(
        
abs($end $time_diff),
        
abs(($start $time_diff) % 24)
    );
}
 
function 
time_diff($start$end)
{
    
# do not ignore minutes
    
$start strtotime($start);
    
$end strtotime($end);
 
    
$diff abs($start $end);
    
$hours floor($diff 3600);
    
$minutes = ($diff - ($hours 3600)) / 60;
 
    
$hours $start $end24 $hours$hours;
    
    return 
compact('hours''minutes');
}
 
$start '18:00:00';
$end '03:00:00';
 
var_dump(shift_span($start$end));


ivanhoe 13. 04. 2012. 04:45

minute mozes da racunas i kao:
PHP kôd:

$minutes = ($diff 3600) / 60

nije da je neka bitna razlika, nego cisto eto kao zanimljivost :)

jablan 13. 04. 2012. 09:51

Obrati pažnju samo da dani kad se prebacuje vreme sa letnjeg na zimsko i obratno nemaju po 24 časa. :)

japan 13. 04. 2012. 10:15

Off Topic: ^ a ništa "primera radi"? :D

jablan 13. 04. 2012. 18:23

Off Topic: ^ :D Napisao sam nešto ali nisam hteo da kačim (autocenzura na delu). Mislim da problem nije dobro definisan. ;)

webarto 13. 04. 2012. 19:02

čekaj, kako nije definisan problem :D
slobodno zakači, može i ruby ;)

Kôd:

+----+----------+----------+----------+
| id | staff_id | start    | end      |
+----+----------+----------+----------+
|  1 |      66 | 21:00:00 | 03:00:00 |
+----+----------+----------+----------+

Kôd:

+----+-------------+------+----------+----------+
| id | schedule_id | day  | start    | end      |
+----+-------------+------+----------+----------+
| 16 |          1 |    1 | 21:00:00 | 00:00:00 |
| 17 |          1 |    2 | 00:00:00 | 03:00:00 |
+----+-------------+------+----------+----------+

day 1 je ponedeljak, day 2 je utorak...

jablan 13. 04. 2012. 19:46

Heh, pa sad mi je još manje jasno kad vidim da u drugoj tabeli opet nemaš broj sati nego početno i krajnje vreme.

Npr. http://ideone.com/UrB1k

webarto 13. 04. 2012. 20:28

Nije ni meni jasno, ali takav je zahtjev. Hvala na code, mnogo logičnije u Ruby :)
http://pokit.org/get/img/e7b901bdd27...8876bddec1.png


Vreme je GMT +2. Trenutno vreme je 11:20.

Powered by vBulletin® Verzija 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright © DevProTalk. All Rights Reserved.

Mišljenja, saveti, izjave, ponude ili druge informacije ili sadržaji nastali na Sajtu su vlasništvo onoga ko ih je kreirao, a ne DevProTalk.com, tako da ne morate da se oslanjate na njih.
Autori poruka su jedini odgovorni za ovakve sadržaje. DevProTalk.com ne garantuje tačnost, kompletnost ili upotrebnu vrednost informacija, stavova, saveta ili datih izjava. Ne postoje uslovi pod kojima bi mi bili odgovorni za štetu ili gubitak koji je posledica bilo čijeg oslanjanja na nepouzdane informacije, ili bilo kakve informacije nastale kroz komunikaciju između registrovanih članova.
Web sajt može sadržavati linkove na druge web sajtove na Internetu ili neke druge sadržaje. Ne kontrolišemo niti podržavamo te druge web sajtove, niti smo pregledali bilo kakve sadržaje na takvim sajtovima. Mi nećemo biti odgovorni za legalnost, tačnost ili prikladnost bilo kog sadržaja, oglasa, proizvoda, usluga ili informacije lociranim na ili distribuiranih kroz druge web sajtove, niti za bilo kakvu štetu nastalu kao posledica takvih informacija. DevProTalk.com drži i čuva druga prava vlasništva na web sajtu. Web sajt sadrže materijale zaštićene copyright-om, zaštitne znakove i druge informacije o pravu vlasništva ili softver. Članovi mogu poslatu informacije zaštićene pravima vlasništva njihovih nosilaca i ona ostaju zaštićena bez obzira da li su oni koji prenose te informacije to naveli ili ne. Osim informacija koje su u javnom vlasništvu ili za koje dobijete dozvolu, nemate pravo da kopirate, modifikujete ili na bilo koji način menjate, objavljujete, prenosite, distribuirate, izvršavate, prikazujete ili prodajte bilo koju informaciju zaštićenu pravima vlasništva. Slanjem informacija ili sadržaja na bilo koji deo DevProTalk.com, Vi automatski dozvoljavate i predstavljate garanciju da imate pravo da dozvolite DevProTalk.com ili članovima DevProTalk.com bespovratnu, kontinualnu, neograničenu, globalnu dozvolu da koriste, kopiraju, izvršavaju, prikazuju i distribuiraju takve informacije i sadržaje i da iz takvih sadžaja koriste bilo koji deo u bilo koje svrhe, kao i pravo i dozvolu da koriste gore navedene sadržaje. Svi zaštitni znakovi (trademarks), logotipi, oznake usluga, firme ili imena proizvoda koji se pominju na ovom web sajtu su vlasništvo kojim raspolažu njihovi vlasnici.