---
title: "Räkna ned"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/119250-räkna-ned"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "Qimen"
published: "2005-01-04T02:40:45.000Z"
updated: "2005-11-24T18:50:00.000Z"
replies: 7
views: 697
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/php/119250-räkna-ned"
---

# Räkna ned

## #1 — Qimen, 2005-01-04T02:40Z

Hej,

Finns det något smart sätt att räkna ned till ett datum och visa antal timmar och minuter? Jag vet inte varför men jag får en känsla av att mitt sätt nedan är onödigt på något vis. :) 

```php
<?
$value = "2005-01-04 06:00:00";

$value = explode(" ", $value);
$datum = explode("-", $value[0]);
$tid = explode(":", $value[1]);
$left = (int)((mktime($tid[0],$tid[1],$tid[2],$datum[1],$datum[2],$datum[0]) - time())/60);
$left = ($left - ($mod = $left % 60)) / 60;

print ("Tid kvar: " . $left . " timmar och " . $mod . " minuter."); 
?>
```

Permalänk: https://www.webforum.nu/p/119250

## #2 — Matte, 2005-01-04T13:58Z

Du kan ta en titt på [strtotime](http://se2.php.net/manual/en/function.strtotime.php).

Du skulle kunna göra något på det här hållet.

```php
$value = "2005-01-04 06:00:00";

$left = strtotime($value) - time();
$neg = $left < 0 ? 1 : 0;

$hour = floor(abs($left) / 3600);
$min =  floor(abs($left) % 3600 / 60);

$pattern = $neg ? "Tiden gick ut för %d timmar och %d minuter sedan" : "Tid kvar: %d timmar och %d minuter";

echo sprintf($pattern, $hour, $min);
```

Permalänk: https://www.webforum.nu/p/1518491

## #3 — Snakes, 2005-01-04T15:15Z

Varför inte köra med javascript?.... då behöver man inte ladda om hela tiden :OO... och ingen Php behövs!

Men men...

EDIT:

```php
$date = date("M d Y H:i:00",$date);
echo '
<script language="JavaScript">
	<!--
		function getTime() {
			now          = new Date();
			y2k          = new Date("' . $date . '");
			days         = (y2k - now) / 1000 / 60 / 60 / 24;
			daysRound    = Math.floor(days);
			hours        = (y2k - now) / 1000 / 60 / 60 - (24 * daysRound);
			hoursRound   = Math.floor(hours);
			minutes      = (y2k - now) / 1000 /60 - (24 * 60 * daysRound) - (60 * hoursRound);
			minutesRound = Math.floor(minutes);
			seconds      = (y2k - now) / 1000 - (24 * 60 * 60 * daysRound) - (60 * 60 * hoursRound) - (60 * minutesRound);
			secondsRound = Math.round(seconds);
			sec = "s";
			min = "m, ";
			hr  = "h, ";
			dy  = "d, ";
			Div.innerHTML = daysRound  + dy + hoursRound + hr + minutesRound + min + secondsRound + sec;
			newtime = window.setTimeout("getTime();", 1000);
		}
	// -->
	</script>
';
```

Vill du inte använda php då byter du ut 

```php
y2k          = new Date("' . $date . '");
```

mot

```php
y2k          = new Date("Jan 05 2005 21:00:00");
```

För att skriva ut, skriver du: \<div id="Div"\>\</div\>
Och självklart så måste du starta funktionen i början. Via onload eller via en annan funktion!

Permalänk: https://www.webforum.nu/p/1518533

## #4 — Peeer, 2005-01-04T17:42Z

> **Snakes skrev:**
>
> Varför inte köra med javascript?.... då behöver man inte ladda om hela tiden :OO... och ingen Php behövs!

Om det är en nedräkning till ex. releasedatum av en site så behöver man kanske inte ha en klocka som räknar ner varje sekund (Att räkna ut antalet sekunder är väl dessutom rätt onödigt när bara timmar/minuter efterfrågades).

En annan nackdel med javascript är att man blir beroende av att besökaren dels har javascript aktiverat och dels att besökarens klocka stämmer. Dessutom blir det mer data att överföra.

Permalänk: https://www.webforum.nu/p/1518677

## #5 — Qimen, 2005-01-04T17:51Z

Tack Matte för din lösning, den känns mer "rätt". 

Snakes: suck, hade jag velat använda javascript hade jag frågat i det forumet, dessutom blir det lite svårt att köra javascript via kommandotolken/konsolen. ;)

Permalänk: https://www.webforum.nu/p/1518687

## #6 — Fuze, 2005-11-24T07:40Z

Hejsan!
Mattes Script var precis vad jag letade efter. Men kan man lägga till så den räknar dagar också???

hur???

Tack så länge!

Permalänk: https://www.webforum.nu/p/1714558

## #7 — Matte, 2005-11-24T09:54Z

Testa med:

```php
$left = strtotime($value) - time(); 
$neg = $left < 0 ? 1 : 0; 

$days = floor(abs($left) / (3600 * 24));

$left = abs($left) % (3600 * 24);

$hour = floor($left / 3600); 
$min =  floor($left % 3600 / 60);
```

Permalänk: https://www.webforum.nu/p/1714602

## #8 — Fuze, 2005-11-24T18:50Z

Tackar så mycke! Fungerade kanon!!!

Men om det är fler som vill använda det så glöm inte ändra de två raderna under också:

```
$pattern = $neg ? "Började för: %d dagar %d timmar och %d minuter sedan" : "Börjar om: %d dagar %d timmar och %d minuter";

echo sprintf($pattern, $days, $hour, $min); ?>
```

Tack ska du ha Matte!

Permalänk: https://www.webforum.nu/p/1714762

---

Tråden på webben: https://www.webforum.nu/amne/php/119250-räkna-ned
