Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Zeit ausrechnen [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Zeit ausrechnen


 
owna6e2
05-03-2004, 22:13 
 
Hallo,

wenn ich ein Datum habe, z.B. den 24.12.2003 und auch in diesem Format, wie kann ich ausrechnen wieviele Minuten/Tage es her ist?

 
Wurzel
05-03-2004, 22:16 
 
- umwandeln in timestamp
- subtrahieren
- rest mit date() formatieren ... teilen ... whateverdie form der fragestellung wird auch immer kurioser

 
owna6e2
05-03-2004, 22:17 
 
Wie wandle ich in timestamp um?

 
Offe1
05-03-2004, 22:21 
 
Lies dir mal Datums- und Zeit-Funktionen (http://www.mysql.de/doc/de/Date_and_time_functions.html) in Ruhe durch.

Offe

 
Wurzel
05-03-2004, 22:23 
 
Original geschrieben von Offe1
Lies dir mal Datums- und Zeit-Funktionen (http://www.mysql.de/doc/de/Date_and_time_functions.html) in Ruhe durch.
Offe vielleicht wäre ein explode() noch angezeigt ;)

 
wahsaga
05-03-2004, 23:44 
 
Original geschrieben von Offe1
Lies dir mal Datums- und Zeit-Funktionen (http://www.mysql.de/doc/de/Date_and_time_functions.html) in Ruhe durch.
hm - war denn irgendwo von mysql die rede?

in PHP würde ich ja eher mktime() oder auch strtotime() vorschlagen (letzteres verlangt natürlich amerikanisches format).

 
owna6e2
06-03-2004, 10:07 
 
Ich hab mal auf php.net gesucht und folgendes Beispiel benutzt, was für meine Zwecke ja geeignet ist, aber nicht funktioniert (Ergebnis: 0)

$init_day = 1;
$init_mth = 1;
$init_yr = 2004;

$dst_day = 5;
$dst_mth = 8;
$dst_yr = 2004;

//first convert to unix timestamp
$init_date = mktime(12,0,0,$init_mth,$init_day,$init_yr);
$dst_date = mktime(12,0,0,$init_mth,$init_day,$init_yr);

$offset = $dst_date-$init_date; //Depending on which offset type you want, switch order

$days = floor($offset/60/60/24);

 
Wurzel
06-03-2004, 10:10 
 
init_date & dst_date sind gleich gross weil du immer die selben werte bei mktime() einsetzt

 
owna6e2
06-03-2004, 10:14 
 
Welche Werte muss ich denn einsetzen, damit die Schose funktioniert?

 
Offe1
06-03-2004, 10:27 
 
$dst_date = mktime(12,0,0,$init_mth,$init_day,$init_yr);

in
$dst_date = mktime(12,0,0,$dst_mth,$dst_day,$dst_yr);


Entschuldigung falls mein Link dich verwirrt hat. Ich war irgendwie bei Mysql :)

Offe

 
owna6e2
06-03-2004, 10:32 
 
Oh, achso, die hatten die selben Variablen, habe ich garnicht gemerkt. :)

Vielen Dank.

 
Wurzel
06-03-2004, 10:42 
 
kp aaaber:
bei sowas macht man erstmal kontrollausgaben mit echo, print_r, etc. :teach:

 
owna6e2
07-03-2004, 10:33 
 
# Calculate #

$init_day = $visit[d]; $init_mth = $visit[m]; $init_yr = $visit[y];

$init_date = mktime(12,0,0,$init_mth,$init_day,$init_yr);
$dst_date = mktime(12,0,0,$dst_mth,$dst_day,$dst_yr);

$offset = $dst_date-$init_date;
$days = floor($offset/60/60/24);

# /Calculate #


So bekomme ich mit der Ausgabe von $days die vergangenen Tage. Doch wie bekomme ich die vergangen Sekunden und Minuten?

 
Offe1
07-03-2004, 10:43 
 
$min = floor($offset/60);
$sec = $offset;


Offe

 
owna6e2
07-03-2004, 10:51 
 
Danke! Nun gebe ich ja vergangene Tage, Stunden und Minuten aus. Doch wie berechne ich das, dass Stunden von Tagen und Minuten von Stunden usw abgezogen werden?

 
Offe1
07-03-2004, 11:03 
 
$min = floor($offset/60);
$sec = $offset;
$days = floor($offset/60/60/24);


die Sekunden sind $offset, die Minuten sind die ganze Zahl von $offset durch 60. Der Tag ist die ganze Zahl von $offset durch 60 durch 60 durch 24. Was könnten da die Stunden sein?

Offe

 
owna6e2
07-03-2004, 11:08 
 
Wohl so:

$hours = floor($offset/60/60);

Nun gebe ich ja vergangene Tage, Stunden und Minuten aus. Doch wie berechne ich das, dass Stunden von Tagen und Minuten von Stunden usw abgezogen werden?

 
Offe1
07-03-2004, 11:21 
 
$days = floor($offset/60/60/24);
$offset = $offset - ($days * 60 *60*24);
$stunden = floor($offset/60/60);
$offset = $offset - ($stunden * 60 *60);


usw.

Offe

 
owna6e2
07-03-2004, 11:27 
 
$days = floor($offset/60/60/24);
$offset = $offset-($days*60*60*24);
$hours = floor($offset/60/60);
$offset = $offset-($hours*60*60);
$mins = floor($offset/60/60);
$offset = $offset-($mins*60);

Da kommt außer bei $days immer 0 als Ergebnis raus. :(

 
owna6e2
07-03-2004, 14:46 
 
Kann mir jemand helfen?

 
Offe1
07-03-2004, 18:53 
 
<?php
$datum = "24.12.2003";
$datum_array = split("\.", "$datum");
$tag = $datum_array[0];
$monat = $datum_array[1];
$jahr = $datum_array[2];

$zeitstempel = mktime(0, 0, 0, $monat,$tag , $jahr);

$zeitstempel_now = time();
$offset = ($zeitstempel_now - $zeitstempel);
$days = floor($offset/60/60/24);
$offset = $offset - ($days * 60 *60*24);
$stunden = floor($offset/60/60);
echo "Tage:$days<br>\nStunden:$stunden<br>\n";
?>

Ausgabe:
Tage:74<br>
Stunden:19<br>

Offe

 
owna6e2
08-03-2004, 16:02 
 
Also ich habe es so, funktioniert aber nicht.


$init_date = mktime(0,0,0,$init_mth,$init_day,$init_yr);
$dst_date = mktime(0,0,0,$dst_mth,$dst_day,$dst_yr);

$offset = ($dst_date-$init_date);

$days = floor($offset/60/60/24);
$offset = ($offset - ($days*60*60*24));
$hours = floor($offset/60/60);
$offset = ($offset - ($hours*60*60));
$mins = floor($offset/60);
$offset = ($offset - ($mins*60));

 
wahsaga
08-03-2004, 16:29 
 
Original geschrieben von owna6e2
$init_date = mktime(0,0,0,$init_mth,$init_day,$init_yr);
$dst_date = mktime(0,0,0,$dst_mth,$dst_day,$dst_yr);
und das in den parametern hier sinnvolle werte stehen, hast du überprüft?

 
owna6e2
08-03-2004, 16:49 
 
Naja ich hatte es vor dem letzten Post von Offe so:

$init_date = mktime(12,0,0,$init_mth,$init_day,$init_yr);
$dst_date = mktime(12,0,0,$dst_mth,$dst_day,$dst_yr);

 
wahsaga
08-03-2004, 17:06 
 
welche werte die restlichen parameter wie $init_mth, $init_day etc. an dieser stelle haben, wollte ich von dir wissen!

 
owna6e2
08-03-2004, 17:34 
 
das ist das gewünschte datum ohne führende null

 
derHund
08-03-2004, 17:41 
 
hmm,

mach mal

echo $init_mth;
echo $init_day;
echo $init_yr;

etc.

zeig dich mal kooperativer.

 
owna6e2
08-03-2004, 18:15 
 
10
2
2004

Die Tagesberechnung funktioniert ja, deshalb verstehe ich nicht warum ich das jetzt angeben soll. Es geht mir nur um die Aufteilung der Zeit in Tage, Stunden und Minuten

 
derHund
08-03-2004, 18:25 
 
zeig dich mal kooperativer.
mal alle werte ausgeben lassen is nicht, oder?

Also ich habe es so, funktioniert aber nicht.
d.h.?

 
owna6e2
08-03-2004, 18:28 
 
Original geschrieben von derHund
mal alle werte ausgeben lassen is nicht, oder?


d.h.?

Was denn für weitere Werte?

Die Tagesberechnung funktioniert ja, deshalb verstehe ich nicht warum ich das jetzt angeben soll. Es geht mir nur um die Aufteilung der Zeit in Tage, Stunden und Minuten

 
wahsaga
08-03-2004, 19:20 
 
Original geschrieben von owna6e2
Es geht mir nur um die Aufteilung der Zeit in Tage, Stunden und Minuten
wenn du als erste drei parameter für mktime 0 angibst, frage ich mich, was du beim aufteilen von 00:00:00 uhr noch gross an werten für stunden, minuten und sekunden erwartest ...

 
owna6e2
08-03-2004, 19:34 
 
Naja ich möchte halt den Wert der Tage, Stunden und Minuten in einer Variable speichern und diesen wiederrum ausgeben.

Deswegen auch das (was nicht funktioniert):

$offset = ($dst_date-$init_date);

$days = floor($offset/60/60/24);
$offset = ($offset - ($days*60*60*24));
$hours = floor($offset/60/60);
$offset = ($offset - ($hours*60*60));
$mins = floor($offset/60);
$offset = ($offset - ($mins*60));

 
wahsaga
08-03-2004, 20:39 
 
Original geschrieben von owna6e2
Naja ich möchte halt den Wert der Tage, Stunden und Minuten in einer Variable speichern und diesen wiederrum ausgeben.
mann, ich schick dich gleich echt beim bundesamt für merkbefreiung (http://www.leo.org/information/freizeit/fun/merkbefrei.html) vorbei ...


wenn du vom timestamp eines datums, 00:00:00 uhr den timestamp eines anderen datums, ebenfalls um 00:00:00 uhr, abziehst, bleiben da nur ganze tage über, und deshalb gibt es da auch keine stunden und minuten - ist das denn so schwer zu kapieren ...?

 
owna6e2
09-03-2004, 16:37 
 
Ja und wie soll ich das nun machen mit der Ausgabe der "gesamten Vergangenszeit"?

 
Offe1
09-03-2004, 19:07 
 
gib mal $offset,$days,$hours, von mir aus nach jeder Zeile, aus und such deinen Fehler.

Offe

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 07:23 Uhr.