---
title: "Skillnaden mellan två datum"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/162896-skillnaden-mellan-två-datum"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "Tulork"
published: "2007-07-25T15:15:38.000Z"
updated: "2007-07-25T22:17:36.000Z"
replies: 11
views: 589
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/162896-skillnaden-mellan-två-datum"
---

# Skillnaden mellan två datum

## #1 — Tulork, 2007-07-25T15:15Z

Är ute efter en liten funktion som på ett smart sätt kollar en variabel som innehåller ett datum och sen kolla hur många dagar det gått från variablens datum till dagens datum.

Min variabel innehåller följande datumformat och kommer från databasen.

$datum = "2007.07.25";

Vad jag då vill är att när dagens datum blir "2007.08.24" dvs 30 dagar senare, ska en funktion aktiveras. 

När detta väl är klart undrar jag om man kan på något sätt lägga en lååång refresh i ett skript, eller om det finns något annat vettigare sätt att skriptet självkörs.

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

## #2 — Melea, 2007-07-25T16:00Z

```php
function DateDiff ($to) {

   $nto = explode('.', $to);
   $nto = $nto[0].'-'.$nto[1].'-'.$nto[2];

   $sec = strtotime($nto) - strtotime(date("Y-m-d"));
   $days = round($sec / 86400);
   
   return $days;

}

if (DateDiff('2007.08.24') > 30) {

   // anropa något?
   
   echo '   
   <meta HTTP-EQUIV="refresh" CONTENT="5"> 
   <meta HTTP-EQUIV="Pragma" CONTENT="no-cache"> 
   ';

}
```

Otestat, och det finns säkert någon enklare funktion, men den här borde göra susen för dig. :p

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

## #3 — Tulork, 2007-07-25T17:19Z

underbart.. dock så funkar det inte riktigt som det ska än, och jag vet inte varför.

så här ser det ut

```php
<?php
include("conn.php");

function DateDiff ($from, $to) {

	$nfrom = explode('.', $from);
	$nfrom = $nfrom[0].'-'.$nfrom[1].'-'.$nfrom[2];

	$nto = explode('.',$to);
	$nto = $into[0].'-'.$nto[1].'-'.$nto[2];

 	$sec = strtotime($nto) - strtotime($nfrom);
	$days = round($sec / 86400);

	return $days;
}

$doit = "SELECT date FROM annons WHERE aktiv ='1'";
$now = mysql_query($doit) or die ('Ett fel har uppstått');

while($row = mysql_fetch_array($now, MYSQL_ASSOC)) {

$annonstid = $row['date'];

$days = DateDiff($annonstid, $date);
if ($days > 30){

$doit2 = "DELETE FROM annons WHERE date ='$annonstid'";
$now2 = mysql_query($doit2) or die ('Ett fel har uppstått2');

}

}
```

variablen $date finns i conn.php och set ut så här 

```php
$date= date("Y.m.d");
```

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

## #4 — Melea, 2007-07-25T17:23Z

Jag har gjort en liten uppdatering.

```php
<?php
include("conn.php");

function DateDiff ($to) {

   $nto = explode('.', $to);
   $nto = $nto[0].'-'.$nto[1].'-'.$nto[2];

   $sec = strtotime($nto) - strtotime(date("Y-m-d"));
   $days = round($sec / 86400);
   
   return $days;

}

$doit = "SELECT date FROM annons WHERE aktiv ='1'";
$now = mysql_query($doit) or die ('Ett fel har uppstått');

while($row = mysql_fetch_array($now, MYSQL_ASSOC)) {

$annonstid = $row['date'];

if (DateDiff($annonstid) > 30) {

   $doit2 = "DELETE FROM annons WHERE date ='$annonstid'";
   $now2 = mysql_query($doit2) or die ('Ett fel har uppstått2');

}

}
```

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

## #5 — Tulork, 2007-07-25T17:38Z

underbart! funkar prima nu. Tack ska du ha.

En sista fråga.

Hur gör jag för att detta skriptet ska köra sig själv typ en gång om dagen 01.00 på natten.

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

## #6 — Melea, 2007-07-25T17:49Z

Du menar att sidan ska vara uppe 24 / 7 och att den här koden ska uppdatera sig en gång per dygn?

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

## #7 — Tulork, 2007-07-25T18:03Z

aa, alltså teoretiskt, hur ska jag fixa så att scriptet körs en gång per dygn, utan att jag behöver ställa klockan :)

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

## #8 — Melea, 2007-07-25T19:21Z

Läste just igenom din kod och såg vad den gjorde. Allt skulle kunna göras enormt mycket enklare. :)

```php
mysql_query("delete from annons where date < subdate(now(),interval 30 day) and aktiv = 1") or die('Ett fel har uppstått');
```

Kör den här SQL-frågan varje gång sidan laddas så löser det alla dina problem. :)

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

## #9 — Tulork, 2007-07-25T19:59Z

haha lol, måste testa den :)

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

## #10 — Tulork, 2007-07-25T20:06Z

funkar inte :( ingenting tas bort

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

## #11 — Peeer, 2007-07-25T20:47Z

```
 mysql_query("delete from annons where datediff(now(), date) > 30 and aktiv = 1") or die('Ett fel har uppstått');
```

Att göra så scriptet körs regelbundet löser du lättast mha crontab alternativt schemaläggaren. Att ha en browser som refreshar i scriptet är bara dumt.

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

## #12 — Tulork, 2007-07-25T22:17Z

Löste det med schemaläggning. Om den skulle krångla på nått sätt och jag inte är i närheten av en dator eller nått så kan jag aktivera skriptet genom att skicka ett litet sms :)

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

---

Tråden på webben: https://www.webforum.nu/amne/php/162896-skillnaden-mellan-två-datum
