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 Thema bewerten
  #1 (permalink)  
Alt 05-01-2012, 14:32
zach_1
 Registrierter Benutzer
Links : Onlinestatus : zach_1 ist offline
Registriert seit: Jan 2012
Beiträge: 25
zach_1 befindet sich auf einem aufstrebenden Ast
Standard Datum und Zeitzonen in PHP

Hallo
Ich sitze hier vor einem größeren Problem und komme nicht mehr weiter. Nun hoffe ich auf eure hilfe oder unterstützung.

Ich öffne eine Datei und lesen daraus die files bezw. lesen von diesen das dAtum der erstellung aus. Dies klappt auch. Nun will ich das Datum mit dem aktuellen Datum vergleichen. Es sollen nur die files angezeigt werden die nicht älter als 24 Std. sind.

Mein Code dafür sieht so aus:
PHP-Code:
 if ($tf %== 0)
                 {echo 
'<tr></tr>'; }
                  
$datum date (" d m Y H:i:s."filemtime($handle.$datei));
                  
$heute date (" d m Y H:i:s."time());
                  
$anzahltage = ($heute $datum);

                        if (
$anzahltage == 1)
                        {
                        
$filesize sprintf("%u"filesize($handle.$datei)); 
Bei der ausgabe bekomme ich jetzt die folgende Fehlermeldung:

Zitat:
Warning: It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Europe/Berlin' for 'CET/1.0/no DST' instead in /var/www/xxxx/xxxxx/sls.php on line 79
Könnt ihr mir helfen dieses Problem zu lösen?

Danke im vorraus

Geändert von zach_1 (20-01-2012 um 09:15 Uhr)
Mit Zitat antworten
  #2 (permalink)  
Alt 05-01-2012, 14:45
ddel
 Registrierter Benutzer
Links : Onlinestatus : ddel ist offline
Registriert seit: Jan 2012
Beiträge: 9
ddel befindet sich auf einem aufstrebenden Ast
Standard

Hi Zach

Nun es gibt 2 Möglichkeiten um das Problem zu lösen:

1. (Eher unschön..) Du unterbindest die Warnung mit @
2. Setze mittels der Funktion date_default_timezone_set die Timezone für dein System. Wenn du aber mit verschiedenen Files aus verschiedenen Timezonen arbeitest, könnte dies trotzdem zu einem Problem führen.

Gruss, D.
Mit Zitat antworten
  #3 (permalink)  
Alt 05-01-2012, 14:49
zach_1
 Registrierter Benutzer
Links : Onlinestatus : zach_1 ist offline
Registriert seit: Jan 2012
Beiträge: 25
zach_1 befindet sich auf einem aufstrebenden Ast
Standard

Danke dir. Das hat geklappt. Ich dachte ich müße das php.ini angreifen und dort einen eintrag setzen.
Mit Zitat antworten
  #4 (permalink)  
Alt 05-01-2012, 14:57
zach_1
 Registrierter Benutzer
Links : Onlinestatus : zach_1 ist offline
Registriert seit: Jan 2012
Beiträge: 25
zach_1 befindet sich auf einem aufstrebenden Ast
Standard

Ich hätte hier noch eine frage zu meinem Script.

Woran scheitert die Datumberechnung? Ich habe die aktuelle Zeit und die Zeit des files. Und wenn ich beides von einander abziehe, und ich dann schreibe "==1" so müßte dies doch klappen? Aber das wird völlig ignoriert.
Mit Zitat antworten
  #5 (permalink)  
Alt 05-01-2012, 15:25
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Hallo,

sieh dir deine Variablen mal an. Mit Strings kann man nun mal nicht vernünftig rechnen. Dass du sie für die Ausgabe menschenlesbar formatierst, ist völlig in Ordnung, aber rechnen kannst du damit nur, bevor du sie mit date() formatierst, also mit UNIX-Timestamps. Beachte dabei aber, dass die Differenz zwischen zwei Timestamps nicht die Anzahl der Tage sind, sondern die Anzahl der Sekunden, um die sie voneinander abweichen.

Gruß,

Amica
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!
Mit Zitat antworten
  #6 (permalink)  
Alt 05-01-2012, 15:42
zach_1
 Registrierter Benutzer
Links : Onlinestatus : zach_1 ist offline
Registriert seit: Jan 2012
Beiträge: 25
zach_1 befindet sich auf einem aufstrebenden Ast
Standard

Hallo amica

Ich habe es nun so umgestellt:

PHP-Code:
 $datum_rechnung filemtime($handle.$datei);
                  
$heute =time();
                  
$tag = (60*60)*24;
                  
$anzahltage = ($heute $datum_rechnung);
                        if (
$anzahltage $tag 
Aber die ausgabe ist immer noch alles und nicht auf 24 Std. gefiltert.

Wo liegt bitte hier mein Denkfehler?
Mit Zitat antworten
  #7 (permalink)  
Alt 05-01-2012, 15:47
ddel
 Registrierter Benutzer
Links : Onlinestatus : ddel ist offline
Registriert seit: Jan 2012
Beiträge: 9
ddel befindet sich auf einem aufstrebenden Ast
Standard

[QUOTE=zach_1;658776]
PHP-Code:
       $anzahltage = ($heute $datum_rechnung);
               if (
$anzahltage $tag 
[QUOTE]

Die Abfrage wird niemals zutreffen, ausser du hast ein File in der Zukunft

Der UNIX Timestamp des Files liegt immer in der Vergangenheit.
Sagen wir mal heute wäre der Tmstp: 1000 von diesen ziehst du noch den tmstp des Files ab sagen wir 200 = 800-> $anzahltage

aber deine Abfrage lautet:
if(800>1000(heute))... Daher geht es nicht auf
Mit Zitat antworten
  #8 (permalink)  
Alt 05-01-2012, 15:48
zach_1
 Registrierter Benutzer
Links : Onlinestatus : zach_1 ist offline
Registriert seit: Jan 2012
Beiträge: 25
zach_1 befindet sich auf einem aufstrebenden Ast
Standard

Danke dir....
Man sieht den Wald vor lauter Bäumen nicht mehr
Mit Zitat antworten
  #9 (permalink)  
Alt 05-01-2012, 15:49
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Die Ausgabe ist nicht alles, sondern alles was länger als einen Tag her ist. Wenn du alles innerhalb der letzten 24 Stunden haben willst, musst du wohl den Vergleichsoperator umdrehen

@ddel: Mit Zukunft hat das nichts zu tun, im Gegenteil, er vergleicht ja mit $tag, d. h. mit 86400 und bekommt zu viele Ergebnisse aus der Vorvergangenheit von gestern.
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!

Geändert von AmicaNoctis (05-01-2012 um 15:52 Uhr)
Mit Zitat antworten
  #10 (permalink)  
Alt 05-01-2012, 16:40
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.578
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
$tag = (60*60)*24;
ist falsch. Nicht jeder Tag hat 24 Stunden.
Mit Zitat antworten
  #11 (permalink)  
Alt 05-01-2012, 16:46
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Zitat:
Zitat von h3ll Beitrag anzeigen
ist falsch. Nicht jeder Tag hat 24 Stunden.
Es wurde nie behauptet, dass es um Tage geht. Davon abgesehen, erscheint es nur so, als hätten manche Lokalzeit-Tage eine Stunde mehr oder weniger. Ein UNIX-Tag hat immer 86400 Sekunden, alles was sich ändert, ist die Zeitzone und wenn du lediglich wachrufen wolltest, dass man Zeitzonenwechsel beachten muss, gebe ich dir recht. Die Problemstellung spricht aber nicht von Tagen:

Zitat:
Zitat von zach_1 Beitrag anzeigen
Es sollen nur die files angezeigt werden die nicht älter als 24 Std. sind.
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!
Mit Zitat antworten
  #12 (permalink)  
Alt 05-01-2012, 16:49
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.578
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von AmicaNoctis Beitrag anzeigen
Die Problemstellung spricht aber nicht von Tagen
Der Variablenname schon. Also eins von beiden stimmt nicht.
Mit Zitat antworten
  #13 (permalink)  
Alt 05-01-2012, 16:53
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

OffTopic:

Zitat:
Zitat von h3ll Beitrag anzeigen
Der Variablenname schon. Also eins von beiden stimmt nicht.
Ja, $h24 wäre als Variablenname vielleicht exakter gewesen, aber ich finde $day intuitiver. $tag ist sowieso schlecht, weil es deutsch ist und leicht mit „das Tag“ (taggen) verwechselt werden kann.
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!
Mit Zitat antworten
  #14 (permalink)  
Alt 06-01-2012, 10:14
ezkimo
 Registrierter Benutzer
Links : Onlinestatus : ezkimo ist offline
Registriert seit: Apr 2005
Ort: Beckum / Westf.
Beiträge: 279
ezkimo befindet sich auf einem aufstrebenden Ast
ezkimo eine Nachricht über ICQ schicken
Standard

Auch wenn es jetzt ein wenig aus dem Kontext ist. Ab PHP 5.3 kannst Du das in PHP von Hause aus mitgelieferte DateTime Objekt für die Berechnung von Zeitunterschieden benutzen. Mit DateTime::diff() funktioniert das soweit wunderbar.

Ansonsten kann ich Dir auch noch das SPLFileInfo Objekt ans Herz legen. Auch von Hause aus in PHP ab Version 5 integriert.

Kurzes Beispiel dazu:
PHP-Code:
$files = array();
foreach (new 
DirectoryIterator('bla/blubb/foo/') as $fileInfo) {
    if (!
$fileInfo->isDot() && !$fileInfo->isDir()) {
        
$files[] = $fileInfo;
    }
}

$timeNow = new DateTime();
foreach (
$files as $file) {
    
$fileMTime $file->getMTime();
    
$fileTime = new DateTime();
    
$fileTime->setTimestamp($fileMTime);

    
$interval $timeNow->diff($fileTime);

    
var_dump($interval->format('%h Stunden'));

Codeschnipsel ist ungetestet.
__________________
MM Newmedia | MeinBlog

Geändert von ezkimo (06-01-2012 um 10:16 Uhr)
Mit Zitat antworten
  #15 (permalink)  
Alt 09-01-2012, 08:48
zach_1
 Registrierter Benutzer
Links : Onlinestatus : zach_1 ist offline
Registriert seit: Jan 2012
Beiträge: 25
zach_1 befindet sich auf einem aufstrebenden Ast
Standard

Danke an alle
ich werde es heute mit euren anregungen weiterversuchen. Wir hatten feiertag.
Mit Zitat antworten
Antwort

Lesezeichen


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

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Zeitzonen Datei lennart Apps und PHP Script Gesuche 5 18-04-2008 21:45
zeitzonen und sommerzeit kostakimu PHP Developer Forum 14 25-09-2007 20:06
Hilfe!! - Datum / GMT / Zeitzonen Wirrwarr! pixtur PHP Developer Forum 4 16-06-2006 17:45
datum mit zeitzonen Bendt PHP Developer Forum 8 18-04-2005 19:11
[PHP+MYSQL] Datum und Zeichenlänge... Mad Max PHP Developer Forum 0 15-12-2001 14:34

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

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

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

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