webForumDet fria alternativet

jämföra tider

PHP

6 svar · 280 visningar · startad av visslaren

Medlem sedan juli 20011 222 inlägg
Frågan#1

Jag håller på med en auktion och skulle behöva jämföra två tider med varandra. tänkte att funktionen strtotime() kunde vara användbar men jag får det inte att fungera. allt som returneras ur den är -1

$nusekund=date("s");
$nutimme=date("H");
$numinut=date("i");
$nudag=date("d");
$nuyear=date("Y");
$numonth=date("m");

$totaltid=strtotime($year."-".$month-".$dag.",  ".$timme.":".$minut.":".$sekund);
$totalstid=strtotime($nuyear."-".$numonth."-".$nudag.", ".$nutimme.":".$numinut.":".$nusekund);
if($totaltid>=$totalstid) {
echo("<font color=red><b>Såld!</b></font><br>");
$sold="yes";
echo $totaltid."<br>".$totstid;
}
else {
$sold="no";
echo ("".$year."-".$month."-".$dag.", ".$timme.":".$minut.":".$sekund."");
}

båda tiderna är i samma format. t.ex. 2002-07-07, 19:40:50
nån som kan hjälpa?

Medlem sedan aug. 20002 975 inlägg
#2

eftersom dom är i samma format så går det bra att jämföra dom direkt, utan att omvandla till timestamp. Se följande lilla exempel:

<?php 
$datid = "2002-07-07, 19:40:50";
$nutid = date("Y-m-d, H:i:s");

echo "dåtid: $datid <br>";
echo "nutid: $nutid <br>";

if ($nutid > $datid){
  echo "nutid är större !<br>"; 
} else {
  echo "dåtid är större !<br>"; 
}
?> 
<br>
<?php 
$datid = "2003-07-07, 19:40:50";
$nutid = date("Y-m-d, H:i:s");

echo "dåtid: $datid <br>";
echo "nutid: $nutid <br>";

if ($nutid > $datid){
  echo "nutid är större !<br>"; 
} else {
  echo "dåtid är större !<br>"; 
}
?>

Annars kan du ta en titt på funktionerna time() och mktime() i manualen.

Medlem sedan juli 20011 222 inlägg
#3

tack, det fungerade. :)

men nu har jag problem med en annan del av tidsfunktionerna på auktionen. om man lägger ett bud när det är tio minuter eller mindre kvar, ska tidsgränsen förlängas med 10 minuter. jag får det att antingen lägga till 10 minuter varje gång man lägger ett bud oavsett hur lång tid som är kvar, eller så lägger den inte till alls.

nån som kan hjälpa?

//validera tiden

$datid = strtotime($timme.":".$minut.":".$sekund);
$nutid = strtotime(date("H:i:s"));

$diff=($datid-$nutid)/60;
$diff=substr($diff,0,2);

if($diff=='9.' OR $diff=='8.' OR $diff=='7.' OR $diff=='6.' OR $diff=='5.' OR $diff=='4.' OR $diff=='3.' OR $diff=='2.' OR $diff=='1.' OR $diff=='0.') {
$diff=substr($diff,0,1);
}

$nuyear=date("Y");
$numonth=date("m");
$nuday=date("d");
if($year>=$nuyear AND $month>=$numonth AND $dag>=$nuday) {
if($diff>=10) {
//förläng
if($minut==50) {
$minut=00;
$go='no';
if($timme==23) {
$timme=00;
$minut=00;
$dag=$dag+1;
$go='no';
}
else {
$timme=$timme+1;
$go='no';
}
}
else {
$minut=$minut+10;
$go='no';
}

//lägg till förlängning
if($go=='no') {
$sql="UPDATE auktion SET timmar='$timme', minuter='$minut', dagar='$dag' WHERE id='$auktionid'"
or die(mysql_error());
mysql_query("$sql")
or die(mysql_error());
}
}
else {
$go="yes";
}
}
else {
$go="yes";
}
Medlem sedan aug. 20002 975 inlägg
#4

Om jag förstår rätt?
Sista budtid är 23.00
Någon lägger ett bud 22.55
Ny Sista budtid är 23.05

I såfall border det gå med något liknande det här:

$datid = strtotime($timme.":".$minut.":".$sekund);
$nutid = strtotime(date("H:i:s"));

if (($datid-$nutid) < 600){
  $nydatid = date("Y-m-d, H:i:s", time()+600);
}
Medlem sedan juli 20011 222 inlägg
#5

det fungerade bra. men inte riktigt ändå. det ska plussas på 10 minuter på den befintliga tidsgränsen inte på stundens datum helst. finns det nåt enkelt sätt att göra det?

Medlem sedan aug. 20002 975 inlägg
#6

Vi ändrar bara vilken tid vi plussar på

$datid = strtotime($timme.":".$minut.":".$sekund);
$nutid = strtotime(date("H:i:s"));

if (($datid-$nutid) < 600){
  $nydatid = date("Y-m-d, H:i:s", $datid + 600);
}
Medlem sedan juli 20011 222 inlägg
#7

tack nu fungerar det perfekt :D

272 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
140 ms — hämta tråd, inlägg och bilagor (db)
128 ms — ändringar (db)