webForumDet fria alternativet

jämföra tider

6 svar · 280 visningar · startad av visslaren

visslarenMedlem sedan juli 20011 222 inlägg
#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?

MatteMedlem 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.

visslarenMedlem 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";
}
MatteMedlem 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);
}
visslarenMedlem 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?

MatteMedlem 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);
}
visslarenMedlem sedan juli 20011 222 inlägg
#7

tack nu fungerar det perfekt :D

132 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)