| 
					
							
        
    
        
						
			 | 
			
			
					    
					
        
         
          
         
	
            | Forskel på 2 tidspunkter Fra : Ole Gaarde Kristense~ | 
  Dato :  18-10-09 18:25 |  
  |   
            Hej gruppe
 
 Jeg har nogle data om en vagt der er angivet med
 startdato, starttidspunkt, sluttidspunkt
 Eksempel 12-05-2009 16:01 23:51
 Inden de data ryger i en database skal jeg have lavet dem om til 
 datetime-format, og jeg skal beregnes vagtens længde.
 I ovenstående eksempel kan jeg gennemskue hvordan det skal gøres, fordi 
 datoen "passer" til begge tidspunkter.
 Problemet opstår hvis vi passerer midnat
 Variablene vil så være 13-05-2009 17:11 01:11
 Jeg kan ikke gennemskue hvordan jeg logisk skal besluttet at 01:11 hører til 
 14-05-2009
 Det skal nævnes, at hvis vi ryger over midnat er det altid "kun" til dagen 
 efter - så der skal ikke tages højde for om der er flere døgn imellem.
 Nogen gode ideer?
 
 -- 
 Med venlig hilsen
 Ole Gaarde Kristensen
 
 
 
 
  
            
             |   |   
            
        
 
            
         
           Gert Krabsen (18-10-2009) 
         
	
            | Kommentar Fra : Gert Krabsen | 
  Dato :  18-10-09 18:54 |  
  |   
            Ole Gaarde Kristensen skrev:
 > Hej gruppe
 > 
 > Jeg har nogle data om en vagt der er angivet med
 > startdato, starttidspunkt, sluttidspunkt
 > Eksempel 12-05-2009 16:01 23:51
 > Inden de data ryger i en database skal jeg have lavet dem om til 
 > datetime-format, og jeg skal beregnes vagtens længde.
 > I ovenstående eksempel kan jeg gennemskue hvordan det skal gøres, fordi 
 > datoen "passer" til begge tidspunkter.
 > Problemet opstår hvis vi passerer midnat
 > Variablene vil så være 13-05-2009 17:11 01:11
 > Jeg kan ikke gennemskue hvordan jeg logisk skal besluttet at 01:11 hører til 
 > 14-05-2009
 > Det skal nævnes, at hvis vi ryger over midnat er det altid "kun" til dagen 
 > efter - så der skal ikke tages højde for om der er flere døgn imellem.
 > Nogen gode ideer?
 > 
 
 Hvis 'sluttid' er mindre end 'starttid', ja så snakker vi dato+1
  
            
             |   |   
            
        
 
            
         
           Ole Gaarde Kristense~ (18-10-2009) 
         
	
            | Kommentar Fra : Ole Gaarde Kristense~ | 
  Dato :  18-10-09 19:03 |  
  |   
            "Gert Krabsen" <fjernkrabsen@fjernkrabsenfjern.dk> skrev i en meddelelse 
 news:4adb5461$0$285$14726298@news.sunsite.dk...
 >
 > Hvis 'sluttid' er mindre end 'starttid', ja så snakker vi dato+1
 
 Hej Gert
 Havde faktisk overvejet om det var så simpelt.
 Så er spørgsmålet bare om der er nogen nem måde at gøre det på direkte, 
 eller om man skal ud i noget med at skille timer og minutter ad, og så 
 checke om timer_slut er mindre end timer_start (og tilsvarende om de er lig 
 hinden og så min_slut holdt op mod min_start for at sikre at man fanger en 
 meget kort vagt fra f.eks. 10:30 til 10:59)
 
 -- 
 Med venlig hilsen
 Ole Gaarde Kristensen 
 
 
  
            
             |   |   
            
        
 
            
         
            Gert Krabsen (18-10-2009) 
         
	
            | Kommentar Fra : Gert Krabsen | 
  Dato :  18-10-09 19:43 |  
  |  
 
            Ole Gaarde Kristensen skrev:
 > "Gert Krabsen" <fjernkrabsen@fjernkrabsenfjern.dk> skrev i en meddelelse 
 > news:4adb5461$0$285$14726298@news.sunsite.dk...
 >> Hvis 'sluttid' er mindre end 'starttid', ja så snakker vi dato+1
 > 
 > Hej Gert
 > Havde faktisk overvejet om det var så simpelt.
 > Så er spørgsmålet bare om der er nogen nem måde at gøre det på direkte, 
 > eller om man skal ud i noget med at skille timer og minutter ad, og så 
 > checke om timer_slut er mindre end timer_start (og tilsvarende om de er lig 
 > hinden og så min_slut holdt op mod min_start for at sikre at man fanger en 
 > meget kort vagt fra f.eks. 10:30 til 10:59)
 Du slipper ikke for en opdeling, eks. ved hjæl af substring:
 "Variablene vil så være 13-05-2009 17:11 01:11"
 Hvis værdien af position 12-13 er større end pos. 18-19, ja så tilhører 
 sluttid dagen efter.
 Eneste undtagelse:
 Hvis du kan have vagter på op til 24 timer, så
     "13-05-2009 17:11 17:21"
 kan være enten tyve minutter eller et døgn og tyve minutter - ja så har 
 du et problem   
            
             |   |   
            
        
 
            
         
             Ole Gaarde Kristense~ (18-10-2009) 
         
	
            | Kommentar Fra : Ole Gaarde Kristense~ | 
  Dato :  18-10-09 20:37 |  
  |  
 
            "Gert Krabsen" <fjernkrabsen@fjernkrabsenfjern.dk> skrev i en meddelelse 
 news:4adb5fc3$0$274$14726298@news.sunsite.dk...
 >
 > Du slipper ikke for en opdeling, eks. ved hjæl af substring:
 >
 Øv   
> "Variablene vil så være 13-05-2009 17:11 01:11"
 >
 > Hvis værdien af position 12-13 er større end pos. 18-19, ja så tilhører 
 > sluttid dagen efter.
 >
 Jeps - den er jeg med på.
 > Eneste undtagelse:
 > Hvis du kan have vagter på op til 24 timer, så
 >    "13-05-2009 17:11 17:21"
 > kan være enten tyve minutter eller et døgn og tyve minutter - ja så har du 
 > et problem   
Det skulle jeg ikke gerne have - altså så lange vagter   
Har tænkt mig at "sikre" konverteringen ved at alle vagter som er meget 
 korte eller meget lange skal godkendes manuelt inden de ryger i databasen.
 Tak for hjælpen!
 -- 
 Med venlig hilsen
 Ole Gaarde Kristensen 
            
              |   |   
            
        
 
            
         
              Thomas Lindgaard (20-10-2009) 
         
	
            | Kommentar Fra : Thomas Lindgaard | 
  Dato :  20-10-09 20:50 |  
  |   
            Hej
 
 Nedenstående laver timestamps for start og slut ud fra følgende antagelser:
 
 1) vagter er altid kortere end 24 timer
 2) klokkeslet er altid skrevet med foranstillede nuller
 
 <?php
 
 $date_time = '13-05-2009 17:11 01:11';
 
 // Split into date, start time and end time
 $exploded = explode(' ', $date_time);
 print_r($exploded);
 $start_date = $exploded[0];
 $start_time = $exploded[1];
 $end_time = $exploded[2];
 
 // Convert to timestamps
 $start_timestamp = strtotime("$start_date $start_time");
 $end_timestamp = strtotime("$start_date $end_time");
 
 // Add a day if end time is before start time
 if ( $end_time < $start_time ) $end_timestamp += 24 * 3600;
 
 print "Start : ".date('Y-m-d H:i:s', $start_timestamp)."\n";
 print "End   : ".date('Y-m-d H:i:s', $end_timestamp)."\n";
 
 ?>
 
 Output:
 Array
 (
      [0] => 13-05-2009
      [1] => 17:11
      [2] => 01:11
 )
 Start : 2009-05-13 17:11:00
 End   : 2009-05-14 01:11:00
 -- 
 Mvh.
 Thomas
  
            
             |   |   
            
        
 
            
         
           Leif Neland (20-10-2009) 
         
	
            | Kommentar Fra : Leif Neland | 
  Dato :  20-10-09 13:35 |  
  |   
            Ole Gaarde Kristensen skrev:
 > Hej gruppe
 > 
 > Jeg har nogle data om en vagt der er angivet med
 > startdato, starttidspunkt, sluttidspunkt
 > Eksempel 12-05-2009 16:01 23:51
 > Inden de data ryger i en database skal jeg have lavet dem om til 
 > datetime-format, og jeg skal beregnes vagtens længde.
 > I ovenstående eksempel kan jeg gennemskue hvordan det skal gøres, fordi 
 > datoen "passer" til begge tidspunkter.
 > Problemet opstår hvis vi passerer midnat
 > Variablene vil så være 13-05-2009 17:11 01:11
 > Jeg kan ikke gennemskue hvordan jeg logisk skal besluttet at 01:11 hører til 
 > 14-05-2009
 > Det skal nævnes, at hvis vi ryger over midnat er det altid "kun" til dagen 
 > efter - så der skal ikke tages højde for om der er flere døgn imellem.
 > Nogen gode ideer?
 > 
 
 Hvis du kan garantere at formatet altid er sådan; at 01:11 ikke bliver 
 til 1:11, så er det nok at sammenligne tekstmæssigt.
 
 list ($dag,$starttid,$sluttid)=explode(" ",$inddata);
 $aDag   = explode("-",$dag);
 $aStart = explode(":",$starttid);
 $aSlut  = explode(":",$sluttid);
 if ($starttid>$sluttid) {$aSlut[0]+=24;} // Næste døgn
 $start = mktime($aStart[0],$aStart[1],0,$aDag[1],$aDag[0],$aDag[2]);
 $slut  = mktime($aSlut[0], $aSlut[1], 0,$aDag[1],$aDag[0],$aDag[2]);
 
 // mktime accepterer 13/05 25:11 som 14/05 01:11
 
 $vagtlen=$slut-$start; // sekunder
 
 Leif
 
    $
  
            
             |   |   
            
        
 
            
         
           Jonathan Stein (21-10-2009) 
         
	
            | Kommentar Fra : Jonathan Stein | 
  Dato :  21-10-09 08:55 |  
  |  
 
            Ole Gaarde Kristensen skrev:
 > Det skal nævnes, at hvis vi ryger over midnat er det altid "kun" til dagen 
 > efter - så der skal ikke tages højde for om der er flere døgn imellem.
 Pas på med at tælle et døgn frem ved at lægge 24 timer til - det vil 
 give en fejl for dem, der er på vagt i næste weekend.   
Hvis man har timestamps, kan det f.eks. gøres med:
    $timestamp = strtotime('+1 day', $timestamp);
    M.v.h.
      Jonathan
 -- 
 Er din email vigtig? Er du træt af, at din hjemmeside er nede?
 Stabilt webhotel på redundant setup med daglig backup.
 POP3, IMAP, PHP, JSP, Java, Perl, Python, Telnet, SSH, Cron-jobs m.v.
 http://www.jsp-hotel.dk/
            
             |   |   
            
        
 
    
 
					
					 
			 | 
			
				
        
			 |