php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Bewertung: Bewertung: 1 Stimmen, 5,00 durchschnittlich.
  #1 (permalink)  
Alt 04-05-2006, 10:38
maximus Caesar
 Newbie
Links : Onlinestatus : maximus Caesar ist offline
Registriert seit: Apr 2006
Beiträge: 84
maximus Caesar ist zur Zeit noch ein unbeschriebenes Blatt
Standard Abstand zwischen 2 Daten berechnen, Fehler

Hallo!
Ich versuche den Abstand zweier Daten in Tagen zu berechnen.
Ich lasse mir die Daten anzeigen:

2006-05-04 10:33:29

2006-05-01 10:32:51

sind eindeutig 3 Tage Unterschied, als Ergebniss bekomme ich dennoch immer nur 1
auch wenn es der gleiche Tag ist.
Das ist der code:

PHP-Code:
$date2=$row['DateTime'];
   if (
$row['Intervall']==1)
   {
    echo 
"<p />".$date1."<p />";
    echo 
"<p />".$date2."<p />";
   
$days date('j'$date1 $date2);    //täglich
   
}
   echo 
$days
das gleiche möchte ich dann noch mit Monaten und Wochen machen, hätte da einfach das j durch n bzw. W ersetzt.
Was ist der Fehler?
Mit Zitat antworten
  #2 (permalink)  
Alt 04-05-2006, 10:45
boris-schneider
 Junior Member
Links : Onlinestatus : boris-schneider ist offline
Registriert seit: Apr 2006
Ort: Hessen/FFM
Beiträge: 208
boris-schneider ist zur Zeit noch ein unbeschriebenes Blatt
boris-schneider eine Nachricht über ICQ schicken
Standard Re: Abstand zwischen 2 Daten berechnen, Fehler

versuche es mal so:

PHP-Code:
$anfang date('YmdHis',$start); // 20060501103251
$ende date('YmdHis',$end); // 20060504103329

// Dann nur noch die Differenz berechnen lassen und aufrunden.
// Oder als Zeitangabe ausgeben lassen zb. Diff: 3 Tage 2 Stunden 4 Sekunden usw. 
Sers
Der Boris

Geändert von boris-schneider (04-05-2006 um 10:49 Uhr)
Mit Zitat antworten
  #3 (permalink)  
Alt 04-05-2006, 12:16
pekka
 PHP Master
Links : Onlinestatus : pekka ist offline
Registriert seit: Jun 2001
Ort: Köln
Beiträge: 6.608
pekka befindet sich auf einem aufstrebenden Ast
Standard

Ähhh....
Gehts noch?

Der eine zieht einen String nach dem Muster "Y-M-D H:i:s" vom anderen ab, der nächste kommt mit "YmdHis", und dann wundert man sich, daß nur scheiß rauskommt.

@Maximus-Caesar: Das Intervall berechnest Du am besten mit Unix- Timestamps (Anzahl Sekunden seit dem 1.1.1970). Du kannst Dir das Datum mit der Funktion UNIX_TIMESTAMP direkt als Timestamp aus der Datenbank holen.

Geändert von pekka (04-05-2006 um 12:22 Uhr)
Mit Zitat antworten
  #4 (permalink)  
Alt 04-05-2006, 12:44
boris-schneider
 Junior Member
Links : Onlinestatus : boris-schneider ist offline
Registriert seit: Apr 2006
Ort: Hessen/FFM
Beiträge: 208
boris-schneider ist zur Zeit noch ein unbeschriebenes Blatt
boris-schneider eine Nachricht über ICQ schicken
Standard

Zitat:
Original geschrieben von pekka
Ähhh....
Gehts noch?

Der eine zieht einen String nach dem Muster "Y-M-D H:i:s" vom anderen ab, der nächste kommt mit "YmdHis"
erm,
jede date(); funktion wird mit folgendem wert gefüttert: 1144430763, demnach ist mein ansatz nicht ganz falsch

Trotzalledem war es nur ein ungetesteter Ansatz

Geändert von boris-schneider (04-05-2006 um 15:36 Uhr)
Mit Zitat antworten
  #5 (permalink)  
Alt 04-05-2006, 16:17
maximus Caesar
 Newbie
Links : Onlinestatus : maximus Caesar ist offline
Registriert seit: Apr 2006
Beiträge: 84
maximus Caesar ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ich komm damit nicht so ganz klar...
kann mir noch jemand nen Ansatz geben, und was ich bei Wochen bzw. Monaten machen muss?
Mit Zitat antworten
  #6 (permalink)  
Alt 04-05-2006, 17:24
maximus Caesar
 Newbie
Links : Onlinestatus : maximus Caesar ist offline
Registriert seit: Apr 2006
Beiträge: 84
maximus Caesar ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Also, ich mach das jetzt so:
PHP-Code:
$date1 $row['DateTime'];
    
$date2 mktime(0,0,0,date('m'),date('d'),date('Y'));
    
$days Round((($date2-$date1)/86400), 0) ; 
Für Tage funktioniert das bestens, ebenso für Wochen. Doch wie mache ich das mit Monaten? Nicht jeder Monat hat gleich viele Tage!
Mit Zitat antworten
  #7 (permalink)  
Alt 04-05-2006, 17:29
TobiaZ
  Moderator
Links : Onlinestatus : TobiaZ ist offline
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
Blog-Einträge: 1
TobiaZ befindet sich auf einem aufstrebenden Ast
Standard

richtig.

aber du willst die ausgabe ja in monaten haben. also musst du auch definieren, was ein monat ist.
__________________
ERST LESEN: Unsere Regeln. | Ich hab schon Pferde kotzen sehn!

READ THIS: Strings richtig trennen/verbinden | JOINs, das leidige Thema | Wegwerf E-Mail Adressen

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Mit Zitat antworten
  #8 (permalink)  
Alt 04-05-2006, 17:31
maximus Caesar
 Newbie
Links : Onlinestatus : maximus Caesar ist offline
Registriert seit: Apr 2006
Beiträge: 84
maximus Caesar ist zur Zeit noch ein unbeschriebenes Blatt
Standard

kannst mir mal zeigen wie du das meinst?
In Sekunden Angeben, wies bei tagen und Wochen geht bringt ja nichts...
Mit Zitat antworten
  #9 (permalink)  
Alt 04-05-2006, 17:33
boris-schneider
 Junior Member
Links : Onlinestatus : boris-schneider ist offline
Registriert seit: Apr 2006
Ort: Hessen/FFM
Beiträge: 208
boris-schneider ist zur Zeit noch ein unbeschriebenes Blatt
boris-schneider eine Nachricht über ICQ schicken
Standard

Zitat:
Original geschrieben von maximus Caesar
In Sekunden Angeben, wies bei tagen und Wochen geht bringt ja nichts...
Wieso nicht ?, die sekunde ist doch der Ausgangspunkt von allem!
Mit Zitat antworten
  #10 (permalink)  
Alt 04-05-2006, 17:34
maximus Caesar
 Newbie
Links : Onlinestatus : maximus Caesar ist offline
Registriert seit: Apr 2006
Beiträge: 84
maximus Caesar ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Das schon, aber nicht jeder Monat hat 31 Tage...
Das sollte berücksichtigt werden
Mit Zitat antworten
  #11 (permalink)  
Alt 04-05-2006, 17:35
boris-schneider
 Junior Member
Links : Onlinestatus : boris-schneider ist offline
Registriert seit: Apr 2006
Ort: Hessen/FFM
Beiträge: 208
boris-schneider ist zur Zeit noch ein unbeschriebenes Blatt
boris-schneider eine Nachricht über ICQ schicken
Standard

Der Post von pekka hat einen nützlichen Link den man mal besuchen sollte

Bin heute Mittag auf folgendes Script gestossen, und vielleicht hilft es dir ja weiter dir was eigenes und entsprechend angepasstes zu scripten

PHP-Code:
function diffrence($date_one$date_two$unit "second"$precision 4) {

    
//Building the Unit for $unit
    
switch($unit) {
    case 
"second":
        
$q 1;
        break;
    case 
"minute":
        
$q 60;
        break;
    case 
"hour":
        
$q 60 60;
        break;
    case 
"day":
        
$q 60 60 24;
        break;
    case 
"week":
        
$q 60 60 24 7;
        break;
    case 
"month":
        
$q 60 60 24 30;
        break;
    case 
"year":
        
$q 60 60 24 360;
        break;
    default:
        
$q 1;
    }

    
//dividing with substr()
    //first Date
    
$year_one     substr($date_one04);
    
$month_one     substr($date_one52);
    
$day_one     substr($date_one82);
    
$hour_one     substr($date_one112);
    
$minute_one    substr($date_one142);

    
//second Date
    
$year_two     substr($date_two04);
    
$month_two     substr($date_two52);
    
$day_two     substr($date_two82);
    
$hour_two     substr($date_two112);
    
$minute_two    substr($date_two142);

    
//making Timestamps with mktime()
    
$datum_one mktime($hour_one$minute_one0$month_one$date_one$year_one);
    
$datum_two mktime($hour_two$minute_two0$month_two$date_two$year_two);

    
//returns the diffrence in $unit, all the same which date is bigger
    
if($datum_one $datum_two) {
        return 
round(($datum_one $datum_two) / $q$precision);
    
//end if
    
} else {
        return 
round(($datum_two $datum_one) / $q$precision);
    
//end else
    
}
//function diffrence: end
}

//Datum 1
$date_1 "2006-05-10 15:30";
//Datum 2
$date_2 "2006-05-15 15:30";

//Die Ausgaben
echo diffrence($date_1$date_2"second"4) . "&nbsp;Sekunden Unterschied. <br />";
echo 
diffrence($date_1$date_2"minute"4) . "&nbsp;Minute(n) Unterschied. <br />";
echo 
diffrence($date_1$date_2"hour"4) . "&nbsp;Stunde(n) Unterschied. <br />";
echo 
diffrence($date_1$date_2"day"4) . "&nbsp;Tag(e) Unterschied. <br />";
echo 
diffrence($date_1$date_2"month"4) . "&nbsp;Monat(e) Unterschied. <br />";
echo 
diffrence($date_1$date_2"year"4) . "&nbsp;Jahr(e) Unterschied. <br />"

Geändert von boris-schneider (04-05-2006 um 17:39 Uhr)
Mit Zitat antworten
  #12 (permalink)  
Alt 04-05-2006, 17:45
maximus Caesar
 Newbie
Links : Onlinestatus : maximus Caesar ist offline
Registriert seit: Apr 2006
Beiträge: 84
maximus Caesar ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Super! Danke!
werds mir anpassen!
Mit Zitat antworten
  #13 (permalink)  
Alt 04-05-2006, 17:55
maximus Caesar
 Newbie
Links : Onlinestatus : maximus Caesar ist offline
Registriert seit: Apr 2006
Beiträge: 84
maximus Caesar ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Habs jetzt einfach mal komplett übernommen, ums auszuprobieren. ich rufs in ner funktion auf, die in der gleiche Datei ist.
Die funktion oben steht über meiner.

Für diese beiden Zeilen:
PHP-Code:
    $datum_one mktime($hour_one$minute_one0$month_one$date_one$year_one);
    
$datum_two mktime($hour_two$minute_two0$month_two$date_two$year_two); 
Bekomme ich diese Fehlermeldung:

Zitat:
Warning: mktime() expects parameter 1 to be long, string given in C:\Programme\XAMPP\xampp\htdocs\bank\sessionhelpers.inc.php on line 118

Warning: mktime() expects parameter 1 to be long, string given in C:\Programme\XAMPP\xampp\htdocs\bank\sessionhelpers.inc.php on line 119
Das Datum erstelle ich so:

PHP-Code:
$date11 $row['DateTime'];
    
$date12 mktime(0,0,0,date('m'),date('d'),date('Y'));
    
$date1=date("Y-m-d H:i"$date11);
    
$date2=date("Y-m-d H:i"$date12); 

Geändert von maximus Caesar (04-05-2006 um 18:00 Uhr)
Mit Zitat antworten
  #14 (permalink)  
Alt 04-05-2006, 17:58
boris-schneider
 Junior Member
Links : Onlinestatus : boris-schneider ist offline
Registriert seit: Apr 2006
Ort: Hessen/FFM
Beiträge: 208
boris-schneider ist zur Zeit noch ein unbeschriebenes Blatt
boris-schneider eine Nachricht über ICQ schicken
Standard

Zitat:
Original geschrieben von maximus Caesar
Bekomme ich diese Fehlermeldung:
Wer kein Englisch versteht, geschweigedenn Fehlermeldungen lesen kann, sollte die Finger von PHP lassen !
Mit Zitat antworten
  #15 (permalink)  
Alt 04-05-2006, 18:02
maximus Caesar
 Newbie
Links : Onlinestatus : maximus Caesar ist offline
Registriert seit: Apr 2006
Beiträge: 84
maximus Caesar ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ich verstehe schon, das der erste Parameter Lang, und n String sein soll, nur seh ich nich, wie ich den Fehler beheben kann!

Fehlermeldung sieht jetzt so aus:
Zitat:
Notice: A non well formed numeric value encountered in C:\Programme\XAMPP\xampp\htdocs\bank\sessionhelpers.inc.php on line 118

Notice: A non well formed numeric value encountered in C:\Programme\XAMPP\xampp\htdocs\bank\sessionhelpers.inc.php on line 119
Wie soll ich den Setzen des es richtig verstanden wird?
Wie ichs bis jetzt mache steht oben!

Habs auch mit den Werten die oben bei der funktions tehen probiert, die bringen ebenfals den Fehler!

Geändert von maximus Caesar (04-05-2006 um 18:05 Uhr)
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

Die RIGID-FLEX-Technologie
Die RIGID-FLEX-TechnologieDie sogenannte "Flexible Elektronik" , oftmals auch als "Flexible Schaltungen" bezeichnet, ist eine zeitgemäße Technologie zum Montieren von elektronischen Schaltungen.

06.12.2018 | Berni

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni


 

Aktuelle PHP Scripte

myExplorer

explorer-ähnliche Darstellung von Verzeichnisinhalten. Ideal für Downloadordner. Möglichkeit Filter zu definieren um nur bestimmte Dateien/Ordner darzustellen. Sehr leicht einzubinden.

16.07.2019 bmitt | Kategorie: PHP/ File
WebAudio Player

Dieser Music-Player demonstriert, was mit der WebAudio-API so alles möglich ist. Er ist dazu gedacht, dass ihr euren Besuchern Musik auf der eigenen Homepage anbieten könnt.

16.07.2019 numaek | Kategorie: JAVASCRIPT/ sonstig
Plates native PHP template system

Plates ist ein natives PHP-Vorlagensystem, das schnell, einfach zu verwenden und einfach zu erweitern ist.

24.05.2019 Berni | Kategorie: PHP/ Framework
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 04:11 Uhr.