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 04-02-2009, 11:39
somebody
 Registrierter Benutzer
Links : Onlinestatus : somebody ist offline
Registriert seit: Oct 2003
Beiträge: 39
somebody ist zur Zeit noch ein unbeschriebenes Blatt
Standard Datum vergleichen ohne mktime

Hi Leute!
Ich programmiere gerade ein Script für ne persische Seite und ich bin auf ein Problem gestoßen wo ich nicht mehr weiter weiß.

Ich möchte Überprüfen ob ein Beitrag älter als 10 tage ist, wenn ja soll es nicht mehr angezeigt werden bzw. die Schleife abgebrochen werden.

da das Datum im persischen Kalender ist, (heute ist im persischen Kalender: 16.11.1387 ) kann ich nicht mit Unixtime arbeiten. Und mein versuch über Formatierung in
Date('Y-m-d') und dann vergleichen ist leider auch gescheitert.
Ausserdem habe ich versucht das Jahr zu vergleichen und dann mit "Date('z')-10" zu arbeiten hat auch nicht geklappt, da mein Kalender so gut wie alle befehle aus PHP Date akzeptiert nur nicht das "z"

Hier kurz mein Code:
PHP-Code:
if((jdate("Y-m-d",time()-864000)) > (((the_date('Y-m-d'))))) break; 
jdate= gibt das heutige datum im persischen Kalender an(und davon 10 abgezogen)

the_date=gibt das datum vom Beitrag an (Wordpress)


Ich bin für jeder Hilfe dankbar, bin schon total am verzweifeln Es müssen auch nicht immer 10 Tage sein wenn es an manchen Monaten 11 oder 12 sind macht es auch nichts *g*


Auf jedenfall danke im voraus
Mit Zitat antworten
  #2 (permalink)  
Alt 04-02-2009, 11:58
ghostgambler
 Master
Links : Onlinestatus : ghostgambler ist offline
Registriert seit: Jul 2004
Ort: DE - NRW
Beiträge: 4.620
ghostgambler ist zur Zeit noch ein unbeschriebenes Blatt
Standard

PHP-Code:
echo jdate("Y-m-d",time()-864000) . " " the_date('Y-m-d'); 
Was kommt da raus?
Mit Zitat antworten
  #3 (permalink)  
Alt 04-02-2009, 12:02
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

Wie speicherst Du die Daten intern?

Warum kannst Du Daten nicht als Unixtime speichern, Rechen- und Vergleichsoperationen als Unixtime durchführen und erst bei der Ausgabe in das persische Format umrechnen?
Mit Zitat antworten
  #4 (permalink)  
Alt 04-02-2009, 12:09
somebody
 Registrierter Benutzer
Links : Onlinestatus : somebody ist offline
Registriert seit: Oct 2003
Beiträge: 39
somebody ist zur Zeit noch ein unbeschriebenes Blatt
Standard

"1387-11-06" "1387-11-16"

Wobei das "1387-11-16", der erstellungsdatum des Beitrages ist.
Mit Zitat antworten
  #5 (permalink)  
Alt 04-02-2009, 12:29
ghostgambler
 Master
Links : Onlinestatus : ghostgambler ist offline
Registriert seit: Jul 2004
Ort: DE - NRW
Beiträge: 4.620
ghostgambler ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Gut, jetzt geh gedanklich deinen Code mit den zwei Zahlen mal durch und überprüfe durch Einfügen von
PHP-Code:
die("hier"); 
an diversen Stellen, ob der Code auch wirklich all das so macht wie du es erwartest.

(Tendenziell ist übrigens die Variante von pekka zu bevorzugen. Das Datum in einem sinnvollen Format abspeichern und dann nach Bedarf umformatieren.)
Mit Zitat antworten
  #6 (permalink)  
Alt 04-02-2009, 12:46
somebody
 Registrierter Benutzer
Links : Onlinestatus : somebody ist offline
Registriert seit: Oct 2003
Beiträge: 39
somebody ist zur Zeit noch ein unbeschriebenes Blatt
Standard

@pekka es läuft alles über diesen Wordpress Plugin http://wordpress.org/extend/plugins/wp-jalali/
und alle datumsangaben sind so im perischen Kalender umgerechnet.
Ich kann auf das Beitragsdatum nur über die Wordpress Tags the_date oder the_time zugreifen.
Wobei ich gerad gesehen hab, dass ich (im gegensatz zu oben) the_time benutzen muss da es sein kann, dass mehrere Beiträge den selben Datum haben.

Unixtime kann ich nicht benutzen da kein Datum vor dem 13. Dezember 1901 ( http://de.wikipedia.org/wiki/Unixtim...9Cberlauf_2038 )
darstellbar ist, aber jetzt im persischen Kalender jahr 1386 ist.


@ghostgambler ich versuche durch viele Ausgaben um zu erfahren was da intern vor sich geht ich hab das mit diesem vergleich versucht:

PHP-Code:
$postdaum=the_time('Y-m-d');
echo(
$postdaum."<br>"); //Hier wird der richtige Postdatum angezeigt

$datumminus10=(jdate('Y-m-d',time()-864000));
echo(
$datumminus10."<br>"); //Hier wird richtig der Tag vor 10 Tagen ausgegeben


 
if ($datumminus10 $postdaum) echo("IST GROESSER "); 
Aber bei der If anweisung steht bei allen Beiträgen egal ob die vor 10 Monaten erstellt worden sind oder heute "IST GROESSER" raus d.h. die if Anweisung gibt immer true aus.
Mit Zitat antworten
  #7 (permalink)  
Alt 04-02-2009, 12:50
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

Zitat:
Unixtime kann ich nicht benutzen da kein Datum vor dem 13. Dezember 1901 ( http://de.wikipedia.org/wiki/Unixti....9Cberlauf_2038 )
darstellbar ist, aber jetzt im persischen Kalender jahr 1386 ist.
Nein, Denkfehler!
Ich meine: Speichere das echte Datum - nicht ein, wie Du korrekt sagst nicht darstellbares Fake-1386 - im westlichen Format (=Unixtime) und rechne es erst bei der Ausgabeins persische um.

Also:
Heute ist Mittwoch, der 4. Februar 2009
=> Du arbeitest intern in der Datenbank mit diesem Datum
=> Du führst alle Rechenoperationen mit diesem Datum durch

Erst bei der Ausgabe rechnest du um:
Mittwoch, 4. Februar 2009
in
16. Bahman 1387

Wenn Du 10 Tage von einem beliebigen Datum abziehen mußt, tust Du dies von Unixtime zu Unixtime. Das Ergebnis ist dann ein Unixtime-Datum, das Du für die Ausgabe wieder ins persische umrechnest.

EDIT:
Aber in deinem letzten Post scheinst du ja schon eine Lösung zu haben.

Geändert von pekka (04-02-2009 um 12:53 Uhr)
Mit Zitat antworten
  #8 (permalink)  
Alt 04-02-2009, 14:30
somebody
 Registrierter Benutzer
Links : Onlinestatus : somebody ist offline
Registriert seit: Oct 2003
Beiträge: 39
somebody ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von pekka
Nein, Denkfehler!
Ich meine: Speichere das echte Datum - nicht ein, wie Du korrekt sagst nicht darstellbares Fake-1386 - im westlichen Format (=Unixtime) und rechne es erst bei der Ausgabeins persische um.
Das problem ist das ich über die Wordpress Tags nur auf das persische datum zugreifen möchte und keine Datenbank abfrage. Da sich die Tabellen strukturen von Wordpress jeder Zeit ändern können. Ich schreibe das ganze in ein Template für Wordpress.

Zitat:
Also:
Heute ist Mittwoch, der 4. Februar 2009
=> Du arbeitest intern in der Datenbank mit diesem Datum
=> Du führst alle Rechenoperationen mit diesem Datum durch

Erst bei der Ausgabe rechnest du um:
Mittwoch, 4. Februar 2009
in
16. Bahman 1387

Wenn Du 10 Tage von einem beliebigen Datum abziehen mußt, tust Du dies von Unixtime zu Unixtime. Das Ergebnis ist dann ein Unixtime-Datum, das Du für die Ausgabe wieder ins persische umrechnest.
Durch das Plugin geben die WP Tags nur das Persische datum aus...
Zitat:
EDIT:
Aber in deinem letzten Post scheinst du ja schon eine Lösung zu haben.
[/B]
Leider nicht da die If anweisung immer true gibt egal was für ein Datum da ist.
Mit Zitat antworten
  #9 (permalink)  
Alt 04-02-2009, 14:31
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

Was enthalten die Variablen $datumminus10 und $postdaum?
Mit Zitat antworten
  #10 (permalink)  
Alt 04-02-2009, 14:35
somebody
 Registrierter Benutzer
Links : Onlinestatus : somebody ist offline
Registriert seit: Oct 2003
Beiträge: 39
somebody ist zur Zeit noch ein unbeschriebenes Blatt
Standard

$postdaum=the_time('Y-m-d');
Das ist, dass datum in dem der Beitrag geschrieben worden ist.(Im persischen Kalender)
und
$datumminus10 =jdate('Y-m-d',time()-864000)
Ist das heutige datum abzüglich von 10Tagen(60*60*24*10=864000) im Format JAHR-Monat-Tag


aber du hast mich mit dienem letzten Post auf ne idee gebracht. Vllt finde ich in dem Plugin eine Funktion die persische Zeit im Westliche Umwandelt und dann kann ich time() benutzen
Mit Zitat antworten
  #11 (permalink)  
Alt 04-02-2009, 14:38
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

Zitat:
Original geschrieben von somebody
im Format JAHR-Monat-Tag
Na dann ist es kein Wunder! Du kannst nur Timestamps mit PHP vergleichen. Alles andere gibt Quatschergebnisse.

Zitat:
aber du hast mich mit dienem letzten Post auf ne idee gebracht. Vllt finde ich in dem Plugin eine Funktion die persische Zeit im Westliche Umwandelt und dann kann ich time() benutzen
Würde ich auch empfehlen.
Mit Zitat antworten
  #12 (permalink)  
Alt 04-02-2009, 14:46
ghostgambler
 Master
Links : Onlinestatus : ghostgambler ist offline
Registriert seit: Jul 2004
Ort: DE - NRW
Beiträge: 4.620
ghostgambler ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Du kannst ein
PHP-Code:
intval(str_replace("-"""jtime())) 
machen, dann hast du zwei integers die du vergleichen kannst, das sollte dann klappen.
Mit Zitat antworten
  #13 (permalink)  
Alt 04-02-2009, 14:53
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:
Original geschrieben von pekka
Na dann ist es kein Wunder! Du kannst nur Timestamps mit PHP vergleichen. Alles andere gibt Quatschergebnisse.
Das stimmt so nicht ganz. Es geht auch so:

PHP-Code:
var_dump('2009-02-04' '2008-11-07');
// bool(true)

var_dump('2009-02-04' '2009-02-05');
// bool(false)

var_dump('2009-02-04' '2009-02-03');
// bool(true)

var_dump('2009-02-04' == '2009-02-04');
// bool(true) 
Mit Zitat antworten
  #14 (permalink)  
Alt 04-02-2009, 15:06
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

Zitat:
Original geschrieben von h3ll
Das stimmt so nicht ganz. Es geht auch so:

Klar, stimmt. Aber wie Ghostgambler schon sagt, sollten dann unbedingt die Bindestriche raus. Die können unberechenbares Verhalten erzeugen.
Mit Zitat antworten
  #15 (permalink)  
Alt 04-02-2009, 15:19
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:
Original geschrieben von pekka
Klar, stimmt. Aber wie Ghostgambler schon sagt, sollten dann unbedingt die Bindestriche raus. Die können unberechenbares Verhalten erzeugen.
Nö. Welches denn?
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

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 08:06 Uhr.