---
title: "date-diff-funktion"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/127678-date-diff-funktion"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "bassebhu"
published: "2005-05-04T18:45:19.000Z"
updated: "2005-05-05T12:16:49.000Z"
replies: 6
views: 272
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/127678-date-diff-funktion"
---

# date-diff-funktion

## #1 — bassebhu, 2005-05-04T18:45Z

Hej alla glada!

Jag har en databas med massa händelser som ska inträffa eller har inträffat.
När jag loopar ut dessa händelser vill jag att det ska stå hur lång tid det är till den inträffar/inträffade. De valen som jag vill ska vara möjliga är:

\* I går kl. XX:XX
\* I dag om X timmar och X min
\* I morgon kl. XX:XX
\* X månad XX:XX

Den sista tar alltså upp allt som inte faller in under de andra tre där månad blir månadsnamnet (januari, februari osv). t ex 3 maj 12:00

Jag har hållt på i snart 2 timmar och pillat med funktioner och sökt både här och på php-portalen utan att hitta något som är likt det jag vill åt. Jag tycker att det inte borde vara så svårt egentligen. Finns det ingen date_diff()-funktion i php som man enkelt kollar av detta med? Om det är för mycket att hjälpa med - skriv ner några hints. Det fält som ska hämtas från mysql-databasen är för övrigt datetime och ligger som t ex: 2005-01-01 12:00:00

Tackar för all hjälp!

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

## #2 — pimme, 2005-05-04T18:50Z

Det (enligt mig) lättaste sättet att kolla om ett datum är idag,igår eller imorgon är att göra om datumet till ett unix timestamp och sen lite lekande med mktime(), strtotime() och liknande funktioner.

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

## #3 — bassebhu, 2005-05-05T01:48Z

"unix timestamp" = ?

Du menar göra om datumen till typ sekunder och subtrahera för att sedan pussla ihop skillnaden igen? Finns det inget smidigare sätt så blir jag förvånad.

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

## #4 — pimme, 2005-05-05T08:05Z

> **bassebhu skrev:**
>
> "unix timestamp" = ?
> 
> Du menar göra om datumen till typ sekunder och subtrahera för att sedan pussla ihop skillnaden igen?

Ja, så menar jag.

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

## #5 — bassebhu, 2005-05-05T09:47Z

det var inte det smidigaste jag har hört. jag provar helt enkelt. har att göra hela dan nu haha.

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

## #6 — bassebhu, 2005-05-05T11:49Z

Jag förenklade min funktion lite och nöjde mig med följande:

> I dag kl. 12:00
> I morgon kl. 12:00
> I går kl. 12:00
> 10 maj kl. 12:00

Då blev det mycket enklare och samtidigt snällare kod.

Det verkar funka, men finns det nåt jag kan skriva mer optimerat?

```
function date_diff($current,$past) {
   $diffSeconds = strtotime($current) - strtotime($past);   
   $diffMinutes = $diffSeconds/60;
   $diffHours = $diffMinutes/60;
   $diffDays = floor($diffHours/24);
   return $diffDays;
}

$monthSearch = array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");
$monthReplace = array("januari", "februari", "mars", "april", "maj", "juni", "juli", "augusti", "september", "oktober", "november", "december");

// [....]

$nowDate = date('Y-m-d');
while($row = mysql_fetch_array($result)) {

	$itemsStart = strtotime($row["itemsStart"]);

	$startDate = date("Y-m-d", $itemsStart);
	$startDiff = date_diff($startDate,$nowDate);
	if($startDiff == 0) {
		$itemsStartValue = "I dag kl. " . date("H:i", $itemsStart);
	} elseif($startDiff == 1) {
		$itemsStartValue = "I morgon kl. " . date("H:i", $itemsStart);
	} elseif($startDiff == -1) {
		$itemsStartValue = "I går kl. " . date("H:i", $itemsStart);
	} else {
		$itemsStartValue = str_replace($monthSearch, $monthReplace, date("j M H:i", $itemsStart));
	}

	echo $itemsStartValue;
}
```

Bör jag skriva "I dag" eller "Idag" osv förresten? Vill vara konsekvent, men vad är mest korrekt hehe?

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

## #7 — jOOOL, 2005-05-05T12:16Z

Idag heter det... :)

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

---

Tråden på webben: https://www.webforum.nu/amne/php/127678-date-diff-funktion
