27. februar 2004 - 20:44 
												Der er
									4  kommentarer													og 					1  løsning									 
									
		 
		
			
Ta' ikke ekstra skudår dage 
			Hejsa Jeg har følgende kode som jeg bruger til at trække de ekstra skudår dage - dog virker scriptet ikke rigtigt når f.eks. datoen er 29. 2. 1996 $tid_nu = mktime(); preg_match("/([0-9]{2})-([0-9]{2})-([0-9]{4})/", $row[dato], $datoen); $tid_der = mktime(0,0,0, $datoen[2], $datoen[1], $datoen[3]);                 //Skud år //2004-2000-1996-1992-1988-1984-1980-1976-1972 $nu = date('Y'); $mrkaar = $datoen[3];                 $skud_aar = array(1972,1976,1980,1984,1988,1992,1996,2000,2004,2008,2012); for($i = 0; $i <= count($skud_aar); $i++) { if($mrkaar <= $skud_aar[$i] and $nu != $mrkaar and $nu > $skud_aar[$i])  $tid_der += 86400;  }                                $diff = $tid_nu - $tid_der;                                $years = intval($diff/(60*60*24*365));                $diff -= ($years*60*60*24*365);                $months = intval($diff/(60*60*24*30));                $diff -= ($months*60*60*24*30);                $days = intval($diff/(60*60*24)); Ok, det er lidt fucked at paste kode, men håber i kan se sammenhængen. Problemet er sikkert her: $tid_der += 86400;  Det virker fint hvis man ikke subtrahere de ekstra dage.
					
		
	 
Annonceindlæg tema 
 
Forsvar & beredskab 
Cybersikkerhed, realtidsdata og robuste it-systemer er blevet fundamentet for moderne forsvar.
 
 
	
		
								
					
				27. februar 2004 - 22:18  
				#1 
						
		 
		
			Hvad går det egentlig ud på. Kunne du prøve at forklare det på en anden måde?
		
		
	 
	
		
								
				 
				Slettet bruger 
			 
					
				27. februar 2004 - 23:34  
				#2 
						
		 
		
			Amix, det lyder som om du er ved at gøre noget, der egentlig er ganske let, meget besværligt - i hvert fald, hvis du holder dig indenfor 1970-2038. Måske kan du få lidt inspiration fra dette script: <?php $gavetid=mktime(18,30,0,12,24,2004,0); setlocale(LC_TIME, "da_DK"); echo tidsafstand_tekst($gavetid); function tidsafstand_tekst($tid){   $afstand=tidsafstand($tid);   $tekst='';   if ($afstand['year']!=0){ $tekst.="{$afstand['year']} år, "; }   if ($afstand['mon']!=0){ $tekst.="{$afstand['mon']} måneder, "; }   if ($afstand['mday']!=0){ $tekst.="{$afstand['mday']} dage, "; }   if ($afstand['hours']!=0){ $tekst.="{$afstand['hours']} timer, "; }   if ($afstand['minutes']!=0){ $tekst.="{$afstand['minutes']} minutter, "; }   if ($afstand['seconds']!=0){ $tekst.="{$afstand['seconds']} sekunder, "; }   $tekst=preg_replace('/(.*),\s(.*?),\s$/', '\\1 og \\2', $tekst);   if ($afstand['fremtid']) {     $tekst="Der er " . $tekst . " til " . strftime('%c',$tid);   } else {     $tekst=strftime('%c',$tid) . " var for " . $tekst . " siden.";   }   return $tekst; } function tidsafstand($tid){   if ($tid<time()){     $sidst=getdate();     $foerst=getdate($tid);     $svar['fremtid']=FALSE;   } else {     $sidst=getdate($tid);     $foerst=getdate();     $svar['fremtid']=TRUE;   }   $svar['seconds']=$sidst['seconds']-$foerst['seconds'];   if ($svar['seconds']<0){$svar['seconds']+=60;$sidst['minutes']-=1;}   $svar['minutes']=$sidst['minutes']-$foerst['minutes'];   if ($svar['minutes']<0){$svar['minutes']+=60;$sidst['hours']-=1;}   $svar['hours']=$sidst['hours']-$foerst['hours'];   if ($svar['hours']<0){$svar['hours']+=24;$sidst['mday']-=1;}   $svar['mday']=$sidst['mday']-$foerst['mday'];   if ($svar['mday']<0) {     if ($svar['fremtid']){       $temp=date('t',mktime(0,0,0,$sidst['mon']-1,1,$sidst['year']));     } else {       $temp=date('t',mktime(0,0,0,$foerst['mon'],1,$foerst['year']));     }     $svar['mday']+=$temp;     $sidst['mon']-=1;   }   $svar['mon']=$sidst['mon']-$foerst['mon'];   if ($svar['mon']<0){$svar['mon']+=12;$sidst['year']-=1;}   $svar['year']=$sidst['year']-$foerst['year'];   return $svar; } ?>
		
		
	 
	
		
								
					
				28. februar 2004 - 02:47  
				#3 
						
		 
		
			Hvad handler det om?
		
		
	 
	
		
								
					
				28. februar 2004 - 17:03  
				#4 
						
		 
		
			Detox en script som beregner hvor gamle folk er - i år, måneder og dage. Har selv løst problemet ved at bruge nogle ASP funktioner i  PHP - selvom jeg aldrig har programmeret i ASP Ø_Ø. Her er arbejdskoden, hvis nogen skulle løbe i samme problem. Ikke lige det reneste kode, da dette er mit test script ;) function datediff($per,$d1,$d2) {    $d = $d2-$d1;    switch($per) {       case "yyyy": $d/=12;       case "m": $d*=12*7/365.25;       case "ww": $d/=7;       case "d": $d/=24;       case "h": $d/=60;       case "n": $d/=60;    }    return round($d); } function dateadd($per,$n,$d) {    switch($per) {       case "yyyy": $n*=12;       case "m":          $d=mktime(date("H",$d),date("i",$d)             ,date("s",$d),date("n",$d)+$n             ,date("j",$d),date("Y",$d));          $n=0; break;       case "ww": $n*=7;       case "d": $n*=24;       case "h": $n*=60;       case "n": $n*=60;    }    return $d+$n; }     preg_match("/([0-9]{2})-([0-9]{2})-([0-9]{4})/", $row[dato], $datoen);                   $dato = mktime(0,0,0, $datoen[2], $datoen[1], $datoen[3]);   $years = datediff ('yyyy', $dato, mktime());   $dato = dateadd('yyyy', $years, $dato);     $monthz = datediff('m', $dato, mktime());          if($monthz < 0) {     $dato = dateadd("yyyy",-1, $dato);     $monthz = datediff ("m",$dato,mktime());     $years = $years - 1;      }        $dato = dateAdd("m",$monthz,$dato);   $dayz= datediff ("d",$dato,mktime());      if ($dayz < 0) {     if ($monthz > 0) {       $monthz -= 1;      }     else {       $years -= 1;       $monthz = 11;      }     $dato = dateadd("m",-1,$dato);       $dayz = datediff ("d",$dato,mktime());     }                        if($years == 0) {                          $years = '';                     }                      else {                        $years = $years.' år';                     }                     $dayz = abs($dayz);
		
		
	 
	
		
								
					
				23. marts 2004 - 22:30  
				#5 
						
		 
		
			over and out
		
		
	 
	
	
	
		
	
		
		
		
			
			Vi tilbyder markedets bedste kurser inden for webudvikling