ERLEDIGT
NEIN
NEIN
ANTWORTEN
8
8
ZUGRIFFE
989
989
EMPFEHLEN
-
Guten Morgen!
Hab mir die ganze Nacht meinen Kopf zerbrochen und bin zu keiner Lösung gekommen.
Im Moment nutze ich einen Beziehungs "Counter der einen Monat mit 28 Tagen rechnet - das ist auf dem Mist meiner Freundin gewachsen
.
Da ist es ja nun recht leicht die Jubiläen zu bestimmen.
Beziehungsstart + 28 Tage = Neues Jubiläum (= 1. Monat)
Nun wollte ich aber einen schreiben der die Monate richtig zählt also:
25.12.05 - 25.1.06 = 1 Monat
Wie man es also normal zählen würde.
Aber wie kann ich sowas mit PHP realisieren? Den gesamt Zeitraum der Beziehung zu errechnen ist ja kein Ding. Das Ergebnis in Tage umwandeln und durch 30 teilen dann hätte man die Monate.
Aber wie bestimme ich die unterbleibende Tage bis zum jeweiligen nächsten 25.?
Sprich "Es bleiben noch 3 Tage bis zum 25.4.07".
Kann mir irgendjemand etwas helfen? Ich hab im Moment echt keine Ahnung wie ich das anstellen soll.
Vielen, vielen Dank im Voraus!
Gruß,
Björn
-
30.03.07 13:13 #2
- Registriert seit
- Sep 2005
- Beiträge
- 705
Das ganze geht mit Timestamps ... nennt sich auch Countdown -.-
Sieht dann in etwa so aus
PHP-Code:<?
// Meint geburtstag
// stichtag 1.07.2007 als Unixtime erzeugen
$newDate = mktime(0,0,0, 7, 1, 2007);
// aktuelle Zeit im Unixformat erzeugen
$actDate = time();
// Differenz berechnen (in Sekunden)
$diffDate = ($newDate-$actDate);
// Anzahl Tage = Sekunden /24/60/60
// floor() liefert nur den Anteil vor dem Komma
$days = floor($diffDate / 24 / 60 / 60 );
// den verbleibenden Rest berechnen = Stunden
$diffDate = $diffDate - ($days*24*60*60);
// den Stundenanteil herausrechnen
$hours = floor($diffDate / 60 / 60);
$diffDate = ($diffDate - ($hours*60*60));
// den Minutenanteil
$minutes = floor($diffDate/60);
$diffDate = $diffDate - ($minutes*60);
// die verbleibenden Sekunden
$seconds = floor($diffDate);
// und das ganze dann Anzeigen:
echo "Noch: $days Tage, $hours Stunden, $minutes Minuten und $seconds Sekunden<br>";
?>
-
Hallo!
Das würde so nicht funktionieren...
1) Du gibst das nächste Datum fest im Quellcode an, aber genau dieses soll ja berechnet werden
2) Daraus ergibt sich auch, dass das Script nur funktioniert, bis das Datum vorbei ist - danach wird logischerweise ein negativer Wert ausgegeben, anstatt die Zeit zum nächsten Stichtag...
3) Soweit ich es verstanden habe, soll der "Beziehungs-Counter" zum 25. jeden Monats rechnen...
Versuch's mal damit:Ausgabe heute: Noch 26 Tag(e) bis zum 25.04.2007PHP-Code:<?php
error_reporting(E_ALL);
$calcToDay = 25; // 25. des Monats
$today = (int)date("d");
if($today == $calcToDay) {
echo "Heute ist Jubiläum :-)";
} else if($today < $calcToDay) {
echo "Noch " . ($calcToDay - $today) . " Tag(e) bis zum " . $calcToDay . date(".m.Y");
} else {
$nxtTs = time() + 60 * 60 * 24 * ($calcToDay + ((int)date("t") - $today));
echo "Noch " . ((int)date("t") - $today + $calcToDay) . " Tag(e) bis zum " . date("d.m.Y", $nxtTs);
}
?>
Funktioniert auch bei Jahreswechsel...
Gruß
splitGeändert von split (30.03.07 um 15:02 Uhr)
Um die Welt zu ruinieren, genügt es, wenn jeder seine Pflicht tut
-
30.03.07 17:42 #4
- Registriert seit
- Sep 2005
- Beiträge
- 705
Genau genommen stimmt es nur so halb wie du es schreibst -.-Aber wie kann ich sowas mit PHP realisieren? Den gesamt Zeitraum der Beziehung zu errechnen ist ja kein Ding. Das Ergebnis in Tage umwandeln und durch 30 teilen dann hätte man die Monate.
Aber wie bestimme ich die unterbleibende Tage bis zum jeweiligen nächsten 25.?
Sprich "Es bleiben noch 3 Tage bis zum 25.4.07".
Ok er berechnet nur zum gegebenen Tag -.- ist aber nicht besonders schwer sich dazu dann selbst noch etwas gedanken zu machen. Er müsste nur prüfen ob schon der 25.. ist also irgend ein Datum. Trifft das zu dann immer vom nächsten Monat ausgehen, bis man es berechnen kann
Dann würde er auf sein ergebnis kommen ...
Wollte nur ein Beispiel zeigen und nicht immer den ganzen Code übernehmen -.- habe diesen eben gerade aufm Desktop gehabt
-
Hey!
Vielen vielen Dank für Eure Antworten!
Hab mich ein großes Stück weiter gebracht.
Kann vllt. jemand über mein Script schauen, ob ich das mit dem Umrechnen usw. alles richtig habe? Weil am 25.4 zeigt mir das Script "Zusammen seit 487 Tagen (= 1 Jahr, 4 Monate, 0 Wochen, 2 Tage)" an, müsste eigenlich passen bin mir aber nicht sicher :-/.
Wäre ganz toll, wenn mal jemand drüber schauen könnte
!
In der function.inc.php werden die Sekunden umgerechnet in Jahr (365 Tage), Monate (30,437 Tage) usw.PHP-Code:<?php
require("./function.inc.php"); // Funktionen einladen
$now = time(); # Unix Timestamp
$start = mktime(0,0,0,12,25,2005); # Sekunden seit Unix bis zum 25.12.2005
$beziehung = $now - $start + (24*60*60); # Beziehungszeitraum in Sekunden
$zeitraum = convert_sec($beziehung);
$beziehungs_tage = floor($beziehung / (60 * 60 * 24)); # Beziehung in Tagen
echo "Zusammen seit <b>" . $beziehungs_tage ." Tagen</b> (= ".$zeitraum['jahre'] .", ".$zeitraum['monate'].", ".$zeitraum['wochen'].", ".$zeitraum['tage'].")<br><br>";
$calcToDay = 25; // 25. des Monats
$today = (int)date("d");
$foo = "30.437";
$monate = round($beziehungs_tage / $foo);
$n_monate = $monate +1;
if($today == $calcToDay) {
echo "Heute ist Jubiläum :-) Wir sind ".$monate." Monate zusammen!";
}
else if($today < $calcToDay) {
echo "Noch " . ($calcToDay - $today) . " Tag(e) bis zum " . $calcToDay . date(".m.Y");
echo " Dann sind wir ".$n_monate." Monate zusammen.";
}
else {
$nxtTs = time() + 60 * 60 * 24 * ($calcToDay + ((int)date("t") - $today));
echo "Noch " . ((int)date("t") - $today + $calcToDay) . " Tag(e) bis zum " . date("d.m.Y", $nxtTs);
echo " Dann sind wir ".$n_monate." Monate zusammen.";
}
?>
Schönen Abend noch!
Gruß,
BjörnGeändert von BjoeHrn (06.04.07 um 23:18 Uhr) Grund: PHP Tags gesetzt
-
Hallo,
ich hatte vor einiger Zeit mal eine Routine zur Darstellung von Zeitdifferenzen reingestellt. Vielleicht kannst du diese ja verwenden.
Grüße,
Matthias„Gib einem Menschen einen Fisch, und er wird für einen Tag satt. Lehre ihn Fischen, und er wird ein Leben lang satt.“
“For every complex problem, there is an answer that is short, simple and wrong.”
“Pessimism is safe, but optimism is a lot faster!”
Aktuelles Coding Quiz: #17 - Wörter kreuz und quer
-
Wow! Dein Script ist genial. Hätte nicht gedacht, dass man das so genau ausrechnen kann! Kommt ja doch etwas anderes raus als bei meiner Berechnung
! Werd das auf jeden Fall einfügen!
Nur Differenzen wird es ja weiterhin geben, wenn man vom 25.3 bis zum 25.4 einen Monat hat kommt es ja nie genau auf "1 Jahr und 4 Monate".
Gruß,
Björn
-
Wieso nicht? Wenn man die Funktionen aus dem verlinkten Beitrag voraussetzt und folgenden Code ausführt:
…dann ergibt das auf meinem System diese Ausgabe:PHP-Code:<?php
$start = array(
'Y' => 2005, 'M' => 12, 'D' => 7,
'h' => 0, 'm' => 0, 's' => 0
);
$end = array(
'Y' => 2007, 'M' => 4, 'D' => 7,
'h' => 0, 'm' => 0, 's' => 0
);
$diff = timediff($start, $end);
print_r($diff);
?>
Also genau ein Jahr und vier Monate.Code :1 2 3 4 5 6 7 8 9 10
Array ( [Y] => 1 [M] => 4 [D] => 0 [h] => 0 [m] => 0 [s] => 0 [w] => 0 )
Grüße,
Matthias„Gib einem Menschen einen Fisch, und er wird für einen Tag satt. Lehre ihn Fischen, und er wird ein Leben lang satt.“
“For every complex problem, there is an answer that is short, simple and wrong.”
“Pessimism is safe, but optimism is a lot faster!”
Aktuelles Coding Quiz: #17 - Wörter kreuz und quer
-
Du hast vollkommen recht! Bin wohl etwas neben der Spur. Genial

Nun kann ich mein Script perfekt vollenden *g*.
Vielen vielen, dank für deine Routine!
Gruß & gute Nacht,
Björn
Ähnliche Themen
-
Richtige Syntax bei Operatorüberladung, wann sind "friend", "const", "&" nötig?
Von mrs_schokokeks im Forum C/C++Antworten: 4Letzter Beitrag: 25.08.10, 19:13 -
Eingabe in der timeline: "time*100" - bei Effekt "turbulentes Versetzen"-"Evolution"
Von MTMonline im Forum Videoschnitt, Videotechnik & -produktionAntworten: 2Letzter Beitrag: 25.04.08, 09:49 -
Finder methods + JBoss + Was expecting one of: "CONCAT" "SUBSTRING" ... "(" ... <STRI
Von cengizhdde im Forum Enterprise Java (JEE, J2EE, Spring & Co.)Antworten: 6Letzter Beitrag: 27.05.05, 15:29 -
Datei-Eigenschaften: "erstellt:","Geändert am", "Letzter Zugriff:"
Von KILLSMAKER im Forum C/C++Antworten: 2Letzter Beitrag: 19.05.05, 19:51 -
PHP Counter - "logfile is missing"
Von savvo im Forum PHPAntworten: 2Letzter Beitrag: 26.02.05, 00:27





Zitieren

Login






[PHP][Snippet] Array zu XML konvertieren