PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Zeit Format ändern


JuliusCaesar
15.11.2007, 21:38:38
hey
ich habe das Datum des letzten Login eines users, nun möchte ich festellen ob der user sich innerhalb der letzten 30 Tage eingeloggt hat
Problem: das Datum ist im Format 2007-11-09 00:00:00

nur wie bekomme ich dieses Datum ins UNIX Zeitformat, damit ich mit diesem Datum Rechenoperationen druchführen kann

z.b.
(DATUM in Sekunden - 30*24*60*60) = Datum vor 30 Tagen (in s)

oder brauche ich das Datum gar nicht konvertieren um zu prüfen ob sich der user innerhalb der letzten 30 tage eingeloggt hat?)

mfg Julius

defabricator
16.11.2007, 02:06:52
http://de.php.net/strtotime

JuliusCaesar
16.11.2007, 18:29:59
Hey
danke für die Funktion
das anwenden der Funktion hat soweit geklappt
nun habe ich ein logisches Problem:
<html>
<body>
<?php
error_reporting(E_ALL);
include('mysql.inc.php');

//Datum vor 30 Tagen
$last_date_unix = strtotime("-1 month");
$date = strftime("%d.%m.%y / %H:%M:%S", $last_date_unix);

echo "<hr>
Datum vor einem Monat:<br>
$last_date_unix
<br>
$date
<hr>";

//letzte Logins auslesen
$sql = "SELECT * FROM fa_pass0_login";
$query = mysql_query($sql) or die(mysql_error().'<hr>query'.$query.'<hr>');

while($arr = mysql_fetch_array($query))
{
$last_login_db = $arr['last_login'];

echo " <hr>
<br><b>{$arr['nic']}</b><br>
last login Zeit $last_login_db <br>";

//letzten login in UNIX zeit umwandeln
$unix_zeit_last_login = strtotime($last_login_db);
echo "unix Zeit $unix_zeit_last_login <br><br>";

//letzer login MINUS datum von vor 30 Tagen
$diff = $unix_zeit_last_login - $last_date_unix;
echo "Differenz
<br>$diff";

//wie viel Tage inaktiv
$num_days_inactive = $diff / (60 * 60 * 24);
echo "<br>Du bist $num_days_inactive Tage inaktiv<br><hr>";
}
?>
</body>
</html>

Das Datum von vor 1 Monat ist 16.10.07, das datum des letzten logins ist 2007-11-16
nun wandle ich beide in UNIX Zeitformat um, soweit so gut...

wenn ich die Zeit des Letzten logins MINUS die Zeit von vor 1 Monat berechne müsste doch die Differenz zwischen den beiden Daten herauskommen (in Sekunden)
nun wandle ich diese Sekunden in Tage um indem ich durch (60 * 60 * 24) teile
aber da kommt voll der Blödsinn raus
obwohl ich mich eben erst eingeloggt habe sagt er:
"Du bist 31.0332986111 Tage inaktiv"
wisst ihr wo der Fehler liegt?

defabricator
16.11.2007, 18:43:13
Du willst die beiden Daten nur auf größer/kleiner vergleichen, nicht voneinander abziehen.

JuliusCaesar
16.11.2007, 19:02:33
stimmt, da lag das problem:
ahsb jetzt so gemacht
if($unix_zeit_last_login < $last_date_unix)
{
die("<br><b>{$arr['nic']}</b>, du hast dich zulange nicht mehr eingeloggt");
}

aber mal ne andre Frage:Wenn ich jetzt doch die Anzahl der Tage zwischen dem letzten besuch und den aktuellen Datum berechnen will, wie gehe ich da vor
(Ich stelle mir folgendes für die Index seite vor:
Lieber $user, dien letzter Login war vor $day_inactive Tagen")
wie würde man sowas am besten realisieren?

vt1816
16.11.2007, 19:41:17
...

(Ich stelle mir folgendes für die Index seite vor:
Lieber $user, dien letzter Login war vor $day_inactive Tagen")
wie würde man sowas am besten realisieren?

Siehe Dein vorheriges Posting - da hast Du doch schon die Tage (31.0332986111) ausgerechnet!

JuliusCaesar
16.11.2007, 20:57:17
aber da kommt voll der Blödsinn raus
obwohl ich mich eben erst eingeloggt habe sagt er:
"Du bist 31.0332986111 Tage inaktiv....
da stimmt aber noch was net bei der Berechnung....

defabricator
16.11.2007, 21:16:19
Doch, das stimmt schon.
Vermutlich wunderst Du Dich über das .0332986111, weil Du Du das Ende der Sommerzeit vergessen hast.

JuliusCaesar
16.11.2007, 21:54:04
hey ich glaube wir reden an einander vorbei :D
wenn ich mich gerade eben eingeloggt habe kann ich nicht seit 31 Tage inaktiv sein ;)
die .03... am ende sind mir egal :D

defabricator
16.11.2007, 21:58:02
Dann vergleichst Du wohl gegen '-1 month' und nicht gegen time()

JuliusCaesar
18.11.2007, 00:16:19
ups...
stimmt, danke für den Hinweis, jetzt gehts