Drei Monate zurück rechnen mit PHP

Sandro Feuillet

Legendäres Mitglied
Hi, wer kann mir sagen, wie ich vom aktuellen Monat drei zurückrechnen kann?

Mein (fehlerhafter) Code:
CODE
$dd = date("d");
$mm = date("m");
$mm = ($mm - 03);
$YY = date("Y");
$maxbefore = "0".$mm."/".$dd."/".$YY;



Gruss Sandro
 
Ich würde es in etwa so probieren:

CODE
$dd = date("d");
$mm = date("m");
$YY = date("Y");

if($mm > 03) {
$mm = ($mm - 03);
} else {
$mm = ($mm + 09);
$YY = ($YY - 01);
}

$maxbefore = "0".$mm."/".$dd."/".$YY;

 
Jap, mit mktime gehts:

CODE $last = mktime(0, 0, 0, date("m")-3, date("d"), date("Y"));
$last = date("d.m.Y",$last);
print $last;


Hab einfach noch die zweite Zeile drangehängt, weil mktime die Zeit in Sekunden angibt und diese ja ganz einfach mit date() in ein "ansehnliches" Datum verwandeln kannst...
 
@sandro....

ging mir auch so in einem script....

Falls kein Vorschlag funkt, hab ich dir noch meinen. Hab auch mktime verwendet.
 
sorry, das ich mich in den thread jetzt einmische, aber ich habe eine ähnliche frage:
nehmen wir an ich habe 2 datum im timestampformat. wie kann ich jetzt feststellen, wieviel tage/stunden/Minuten/Sekunden unterschied zwischen ihnen liegen??
 
@ pangu
CODE
<?php
$timeDatum1= mktime(0, 0, 0, 1, 1, 2000);
$timeDatum2= time (); // Jetzt

$diff = $timeDatum2 - $timeDatum1;
$vergangene_tage = round($diff / 86400);
$vergangene_mins = round(($diff - $vergangene_tage) / 60));

?>



und so weiter
wink.gif


eine "etwas" bessere funktion
http://php.benscom.com/manual/de/function.date.php#55986
 
ok, danke
smile.gif


edit:
der code aus dem link funktioniert bei mir aber irgendwie nicht ganz:
CODE
<?php
// for bitwise operations... =]
define(D_YEAR, 1);
define(D_MONTH, 2);
define(D_WEEK, 4);
define(D_DAY, 8);
define(D_HOUR, 16);
define(D_MINUTE, 32);
define(D_SECOND, 64);
function difftimetostring($difftime, $Opt = 0)
{
if ($Opt == 0) $Opt = D_YEAR | D_MONTH | D_DAY | D_HOUR | D_MINUTE;
$diffstring = null;
$BissextFix = floor ($difftime / ((3600 * 24) * 366));
for($i=(date('Y') - $BissextFix); $i < date('Y'); $i++)
{
$x = 0 + ($i / 4);
if (($x - floor($x)) == 0)
$bissextyears ++;
}

if ($Opt & D_YEAR) {
$years = floor($difftime / (3600 * 24 * (365 + $bissextdays)));
$difftime = $difftime % (3600 * 24 * (365 + $bissextdays));
}

if ($Opt & D_MONTH) {
$months = floor($difftime / (3600 * 24 * ((365 + $bissextdays)/12)));
$difftime = $difftime % (3600 * 24 * ((365 + $bissextdays)/12));
}

if ($Opt & D_WEEK) {
$weeks = floor($difftime / (3600 * 24 * 7));
$difftime = $difftime % (3600 * 24 * 7);
}

if ($Opt & D_DAY) {
$days = floor($difftime / (3600 * 24));
$difftime = $difftime % (3600 * 24);
}

if ($Opt & D_HOUR) {
$hours = floor($difftime / 3600);
$difftime = $difftime % 3600;
}

if ($Opt & D_MINUTE) {
$minutes = floor($difftime / 60);
$difftime = $difftime % 60;
}

if ($Opt & D_SECOND) {
$seconds = $difftime;
}

$diff = array();
// Ano
if($years > 0 && $years > 1)
array_push($diff, $years . ' anos');
else if ($years == 1)
array_push($diff, ' 1 ano');

// Meses
if($months > 0 && $months > 1)
array_push($diff, $months . ' meses');
else if ($months == 1)
array_push($diff, $months . ' m�s');

// Semanas
if($weeks > 0 && $weeks > 1)
array_push($diff, $weeks . ' semanas');
else if ($weeks == 1)
array_push($diff, '1 semana');

// Dias
if($days > 0 && $days > 1)
array_push($diff, $days . ' dias');
else if ($days == 1)
array_push($diff, '1 dias');

// Horas
if($hours > 0 && $hours > 1)
array_push($diff, $hours . ' horas');
else if ($hours == 1)
array_push($diff, '1 hora');

// Minutos
if($minutes > 0 && $minutes > 1)
array_push($diff, $minutes . ' minutos');
else if ($minutes == 1)
array_push($diff, '1 minutos');

// Segundos
if($seconds > 0 && $seconds > 1)
array_push($diff, $seconds . ' segundos');
else if ($seconds == 1)
array_push($diff, '1 segundo');

return implode(', ', $diff) . ' atr�s';
}



$DiffDate = 1136740200 - time(); //beispielzeit
$DiffDateString = difftimetostring($DiffDate, 0);
echo $DiffDateString;


..es werden keine sekunden (atros) ausgegeben.. ?!
 
QUOTE (Patrick @ Mi 4.1.2006, 11:40) Jap, mit mktime gehts:


CODE $last = mktime(0, 0, 0, date("m")-3, date("d"), date("Y"));
$last = date("d.m.Y",$last);
print $last;


Hab einfach noch die zweite Zeile drangehängt, weil mktime die Zeit in Sekunden angibt und diese ja ganz einfach mit date() in ein "ansehnliches" Datum verwandeln kannst...

Funktioniert, herzlichen Dank.
 
QUOTE eine "etwas" bessere funktion
http://php.benscom.com/manual/de/function.date.php#55986

Warum ist sie besser?
Da wird meines Erachtens nur nochmal das Rad neu erfunden.
Das Ergebnis sollte das gleiche sein wie mit einem mktime/date-Konstrukt.
Löst das irgendwas, was man mit mktime/date nicth herausfinden könnte?

Aber das Bespiel animiert in jedem Fall, sich ein wenig mit der spanischen Sprache auseinanderzusetzen.
wink.gif
 
QUOTE (Ansgar Berhorn @ Do 5.1.2006, 9:28)
QUOTE eine "etwas" bessere funktion
http://php.benscom.com/manual/de/function.date.php#55986

Warum ist sie besser?
Da wird meines Erachtens nur nochmal das Rad neu erfunden.
Das Ergebnis sollte das gleiche sein wie mit einem mktime/date-Konstrukt.
Löst das irgendwas, was man mit mktime/date nicth herausfinden könnte?

diese Funktionw ar ja absolut OT
wink.gif
... diese Funktion ist nur gut dafür um die Differenz zwischen zwei Timestamps auszurechnen. Was aber überhaupt nichts mit dem eigentlichen Thema (3 Monate zurück) zu tun hat. Nur wiel panug gefragt hat, hab ich die Funktion kurz rausgesucht. Weil sie besser ist als mein Versuch im gleichen Post die Differenz auszurechnen.
 
Zurück
Oben