Avatar billede mjl Nybegynder
14. december 2013 - 12:05 Der er 9 kommentarer og
1 løsning

Finde periode mellem to datoer

Jeg har en arbejdseddel, hvor perioden går fra den 24 i en måned, til den 23 i næste ..

F.eks. 24.11.2013 - 23.12.2013
      24.12.2013 - 23.01.2014

Jeg skal hente data fra MySQL med "BETWEEN" ... men jeg kan ikke lige finde ud af, at få PHP til at vide hvilken periode vi er i på givne tidspunkt ...

Håber nogen kan hjælpe - tak !
Avatar billede mjl Nybegynder
14. december 2013 - 12:27 #1
... altså, den skal altid vise den aktuelle periode !
Avatar billede mjl Nybegynder
14. december 2013 - 14:17 #2
Vil dette virke - også når det går fra år til år (2013-2014) ??

<?
if (date("d") <= '23') {
$dag_F = '24';
$dag_T = '23';
$maaned_F =  date("m")-1;
$maaned_T = date("m");
$aar_F = date("Y");
$aar_T = date("Y");
}
else {
$dag_F = '24';
$dag_T = '23';
$maaned_F = date("m");
$maaned_T = date("m")+1;
$aar_F = date("Y");
$aar_T = date("Y");
}
if ($maaned_T == '1') {
$aar_F =  date("Y")-1;
}
?>

<?
$fra = mktime(0,0,0,$maaned_F,$dag_F,$aar_F);
?>

<?
$til = mktime(0,0,0,$maaned_T,$dag_T,$aar_T);
?>
Avatar billede arne_v Ekspert
14. december 2013 - 20:38 #3
Alternativ:

if (date("d") <= 23) {
    $t1 = strtotime('first day of last month') + 23*24*60*60;
    $t2 = strtotime('first day of this month') + 22*24*60*60;
} else {
    $t1 = strtotime('first day of this month') + 23*24*60*60;
    $t2 = strtotime('first day of next month') + 22*24*60*60;
}
Avatar billede arne_v Ekspert
14. december 2013 - 20:52 #4
Eller mere objekt orienteret:

if ((new DateTime())->format("d") <= 23) {
    $t1 = (new DateTime('first day of last month'))->add(new DateInterval('P23D'))->getTimeStamp();
    $t2 = (new DateTime('first day of this month'))->add(new DateInterval('P22D'))->getTimeStamp();
} else {
    $t1 = (new DateTime('first day of this month'))->add(new DateInterval('P23D'))->getTimeStamp();
    $t2 = (new DateTime('first day of next month'))->add(new DateInterval('P22D'))->getTimeStamp();
}
Avatar billede mjl Nybegynder
15. december 2013 - 10:01 #5
Parse error: syntax error, unexpected T_OBJECT_OPERATOR in ....... on line 2
Avatar billede mjl Nybegynder
15. december 2013 - 10:12 #6
Fra dit første indlæg, får jeg følgende resultater :

1987200
1900800

Kan det laves om til UNIX timestamp - 10 cifre !?

1385247600
1387753200
Avatar billede mjl Nybegynder
18. december 2013 - 16:51 #7
Hmm ... har du mere til dette Arne? Vil du have points !?
Avatar billede arne_v Ekspert
19. december 2013 - 04:09 #8
Det virker som om strtotime returnerer 0.

Hvilken version af PHP og hvilken locale bruger du?
Avatar billede arne_v Ekspert
19. december 2013 - 04:10 #9
Jeg kan godt smide et svar, men jeg synes at det boer virke foerst.
Avatar billede mjl Nybegynder
20. december 2013 - 13:43 #10
Jeg skal først videre med projektet senere - derfor får du points for din hjælp indtil nu - jeg kommer igen, når jeg lige får et overblik ...

Tak, og god jul !
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