Avatar billede wordwrap Nybegynder
13. januar 2005 - 12:25 Der er 11 kommentarer og
1 løsning

Forskel mellem datoer større eller mindre end f.eks 1 år

Hejsa

Hvordan undersøger man om forskellem mellem 2 datoer er større eller mindre end f.eks 1 år ??

Har kigget lidt på strtotime hvor jeg kan trække et år fra dagsdato, men kan ikke lige se hvordan jeg sammenligner den med en anden dato..

eks...

dagsdato = 2005-01-13
gldato = 2004-02-12

Her skal jeg vide om forskellen er mere eller mindre end 1 år..

/strange
Avatar billede ellebaek Nybegynder
13. januar 2005 - 12:30 #1
$dagsdato = time();


$time2 = "2004-02-12"
list($year, $month, $day) = split('[-.-]', $time2);
$time2 = mktime(0, 0, 0, $month, $day, $year);

if ($dagsdato >= ($time2+60*60*24*365)) {
time 1 er større end 1 år større..
}
else {
forskel er mindre end 1 år..
}
Avatar billede x4all_dk Nybegynder
13. januar 2005 - 12:32 #2
Avatar billede detox Nybegynder
13. januar 2005 - 12:52 #3
Eks.:

$gldato = '2004-02-13';
if (strtotime($gldato)<strtotime('-1 YEAR')) echo "Datoen er over 1 år gammel";
else echo "Datoen er mindre end 1 år gammel";
Avatar billede wordwrap Nybegynder
13. januar 2005 - 13:02 #4
ellebaek og detox...

begge ligner noget der kan bruges..

vil dog ikke mene elledaek tager højde for skudår

detox, hvis du ændrer gldato til 2004-02-13 får du besked om at dato er mere end 1 år gammel.. den er jo så præcis et år gammel...

har prøvet og sige <= men det hjælper ikke ?? en anden ting, bliver der taget højde for skudår med strtotime ??

men har da lidt og arbejde videre på nu...

så smid svar og der er lidt point og hente ellebaek og detox :-D

/strange
Avatar billede detox Nybegynder
13. januar 2005 - 13:13 #5
Ja, strtotime() tager højde for skudår. Her er den rettet til, så den den viser når datoen er præcis et år gammel:

$gldato = '2004-01-13';
if (strtotime($gldato . ' ' . date('H:i:s'))<strtotime('-1 YEAR')) echo "Datoen er over 1 år gammel";
elseif (strtotime($gldato . ' ' . date('H:i:s'))==strtotime('-1 YEAR')) echo "Datoen er præcis 1 år gammel";
else echo "Datoen er mindre end 1 år gammel";
Avatar billede wordwrap Nybegynder
13. januar 2005 - 13:13 #6
hov..tager jeg ik fejl med "detox, hvis du ændrer gldato til 2004-02-13 får du besked om at dato er mere end 1 år gammel.. den er jo så præcis et år gammel..."

Det var vist skud år sidste år var det ik ??
Avatar billede ellebaek Nybegynder
13. januar 2005 - 13:16 #7
.. nej, min tager ikk højde for skudår...
Men hvad med:

$dagsdato = time();


$time2 = "2004-02-12"
list($year, $month, $day) = split('[-.-]', $time2);
$time2 = mktime(0, 0, 0, $month, $day, $year);
if ($year %4 == 0 && $month> 2) {
$days = 366;
}
else {
$days = 365;
}
if ($dagsdato >= ($time2+60*60*24*$days)) {
time 1 er større end 1 år større..
}
else {
forskel er mindre end 1 år..
}
Avatar billede detox Nybegynder
13. januar 2005 - 13:17 #8
Sagen er at når du bruger:

strtotime('-1 YEAR')

tager den tidspunktet på dagen med, så timestampet bliver større.
Mit sidste eksempel tager højde for det.
Avatar billede wordwrap Nybegynder
13. januar 2005 - 13:18 #9
Takker :-D

skal der point til, så smider du bare et svar
Avatar billede wordwrap Nybegynder
13. januar 2005 - 13:21 #10
ellebaek

Mente nok... men bare lige for at fluekneppe den, så er det ik helt nok

beregning af skudår er:

Årstal deleligt med 4:  skudår 
Årstal deleligt med 100:  alligevel ikke skudår 
Årstal deleligt med 400:  alligevel skudår
Årstal deleligt med 3600:  alligevel ikke skudår

men regner nu med at benytte den fra detox, så behøver vi ikke gøre mere ud af :-D
Avatar billede detox Nybegynder
13. januar 2005 - 13:24 #11
Måske lidt mere overskueligt:

$gldato = '2004-01-13';
$gl = strtotime($gldato . ' ' . date('H:i:s'));
$aar = strtotime('-1 YEAR');
if ($gl<$aar) echo "Datoen er over 1 år gammel";
elseif ($gl==$aar) echo "Datoen er præcis 1 år gammel";
else echo "Datoen er mindre end 1 år gammel";
Avatar billede detox Nybegynder
13. januar 2005 - 13:24 #12
Et svar fra mig ;o)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester