---
title: "Jämföra datum"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/14911-jämföra-datum"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "braver"
published: "2000-10-26T10:54:00.000Z"
updated: "2000-11-02T10:09:00.000Z"
replies: 7
views: 369
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/14911-jämföra-datum"
---

# Jämföra datum

## #1 — braver, 2000-10-26T10:54Z

Jag är ute efter en funtion att räkna ut åldern genom att jämföra två timestamps, $born och $now. hur ska jag gå tillväga?

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

## #2 — nanne, 2000-10-26T13:02Z

Har du provat?

echo date ("M-d-Y", mktime (0,0,$now-$born,0,0,0));

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

## #3 — nicclas, 2000-10-26T17:50Z

Nanne: Detta 
\<?
$born=strtotime("2000/10/20"); 
$now=time();
echo date ("M-d-Y", mktime (0,0,$now-$born,0,0,0));
?\>
verkar inte fungera. Hur hade du tänkt dig? Det verkar som tredje parametern till mktime (sekunder) måste vara mellan 0 och 59...

braver: Vilken enhet till du ha på skillnaden?
Duger det med antal dagar funkar:
\<?
$born=strtotime("1979/01/27"); 
$today=strtotime(date("Y/m/d")); 
echo "Skillnad i dagar: ".floor(($today-$born)/86400)."\\n";
?\> 

/nicclas - <http://www.nyhetsrubriker.com>

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

## #4 — nanne, 2000-10-30T07:57Z

DOH!... jag tänker tokfel...

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

## #5 — woodi, 2000-10-30T08:45Z

Dessutom skulle väl inte
echo date ("M-d-Y", mktime (0,0,$now-$born,0,0,0)); räkna ut någon ålder utan skriva ut ett datum! :e

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

## #6 — niels, 2000-11-01T19:22Z

jag hittade en function på [www.phpbuilder.com](http://www.phpbuilder.com)   (bra sida!) som borde göra jobbet!

```
<?

Function DateDiff ($interval, $date1,$date2) {

    // get the number of seconds between the two dates
$timedifference =  $date2 - $date1;
    
    switch ($interval) {
        case "w":
            $retval  = bcdiv($timedifference ,604800);
            break;
        case "d":
            $retval  = bcdiv( $timedifference,86400);
            break;
        case "h":
             $retval = bcdiv ($timedifference,3600);
            break;        
        case "n":
            $retval  = bcdiv( $timedifference,60);
            break;        
        case "s":
            $retval  = $timedifference;
            break;        

    }    
    return $retval;
    
}
?>
```

Fungerar exact som ASP:s function. Det gäller bara att räkna ut hur många sekunder det är på ett år då! Problemet är med skottår så det kanske inte fungerar så bra men det är iallafall nåt! 

/Nisse

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

## #7 — nicclas, 2000-11-01T19:28Z

Ehh, det är ju precis som den kod jag skrev ovan (fast klumpigare ;) ). Dessutom räknare jag ut att det går 86400 sekunder på en dag. Men problemet är ju som du påpekar, man vet inte hur många sekunder det går på tex en månad om man inte håller reda på vilken månad det är, eller på ett år om man inte vet om det är skottår eller ej.

/nicclas - <http://www.nyhetsrubriker.com>  **10/10** :)

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

## #8 — niels, 2000-11-02T10:09Z

Jag kodade en function i morse som verkar fungera fint:

```

function calc_age($b_year,$b_month,$b_day){
	
	//Get current date:
	$time = getdate(time());
	$n_year = $time["year"];
	$n_timestamp = time();
	
	//This year birthday:
	$b_timestamp = mktime(0,0,0,$b_month,$b_day,$n_year);
	
	//Calculate age:
	$age = $n_year - $b_year;
	$age--;
	
	if($n_timestamp >= $b_timestamp) {
		$age++;
	}
	
	return $age;
	
}
```

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

---

Tråden på webben: https://www.webforum.nu/amne/php/14911-jämföra-datum
