Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Forum › Drupalcenter.de › Module › Views ›

[gelöst] Date als GebDatum geht nicht älter als 39 Jahre?

Eingetragen von Timbalord (217)
am 08.06.2010 - 12:18 Uhr in
  • Views
  • Drupal 6.x

Hallo zusammen,

ich stehe hier vor einem völlig interessanten Problem.

Ich habe ein Date Feld angelegt, als SelectList für das Geburtsdatum meiner Benutzer. Es funktioniert wunderbar. Mehrere Computed Felder greifen auf das Datum zu. Alles prächtig.

NUR
Ein Benutzer kann scheinbar nicht älter als 39 Jahre sein. Stellt man ein GebDatum ein, welches den Benutzer älter als 39 Jahre macht, läuft sich das Skript tot.

Woran kann das liegen?

Hier ma ein paar Einstellungen des Feldes:
Standardwert: Blank
Defaul value for to date: Same as From date

Eingabeformat: 08.06.2010 - 13:09:23
Custom input format: d.m.Y

Years back and forward: -80:-18
Time increment: 1

Erforderlich: ja
Anzahl von Werten: 1
To Date: Never
Granularität: Year Month Day

Default Display: Mittel
Time zone handling: No time zone conversion

Ich habe keine Erklärung für dieses Phänomen.

Grüße Dennis

‹ Ansichten: Filter veröffentlich aber Rotation? Taxonomy-Menü zusammen mit View darstellen ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Unix-Zeit beginnt am 01.01.1970

Eingetragen von r4s6 (1383)
am 08.06.2010 - 13:08 Uhr

Das hängt wohl damit zusammen. Versuch doch einfach mal das Datum nicht im Dimestamp-Format zu speichern (Einstellungen CCK-Feld). und dann in einem anderen Format zu rechnen.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Also ich habe drei

Eingetragen von Timbalord (217)
am 08.06.2010 - 14:12 Uhr

Also ich habe drei verschiedene CCK Feldtypen
Datum
Datestamp
Datetime

egal welches ich nutze, ein Datum älter als 1970 wird erst gar nicht in der DB gespeichert. Da läuft sich einfach nur das Skript tot. Es kommt also gar nicht erst zu der Berechnung durch ein Computed Feld. Habe ich noch einen Denkfehler?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Kein Datum vor dem 1.1.1970 möglich?

Eingetragen von Timbalord (217)
am 10.06.2010 - 07:25 Uhr

Ich habe jetzt sowohl hier als auch auf Drupal.org geposted.

Irgendwie kommt es mir so vor, als wenn ich der erste wäre, bei dem dieses Problem auftaucht oder es hat sich noch nie jemand Gedanken gemacht, dass Community Mitglieder auch durchaus vor dem 1.1.1970 geboren worden sein könnten.

Hat noch nie jemand dieses Problem gelöst?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Du bist nicht der erste, der

Eingetragen von leda.ch (977)
am 10.06.2010 - 09:14 Uhr

Du bist nicht der erste, der sich mit dem Problem herumschlägt. Seit ich aber einige Zusatzmodule installiert habe, klappts. Tatsächlich verwende ich nun ein DateTime für ein Geburtsdatum in CCK.

Module:
Date
Date API
Date PHP4 (kommt auf die verwendete PHP-Version an)
Date Popup
Date TimeZone

Ausserdem nutze ich für Datumsberechnungen in meinen eigenen Modulen die adodb-time.inc.php.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ich kann mich auf den Kopf

Eingetragen von Timbalord (217)
am 10.06.2010 - 11:43 Uhr

Ich kann mich auf den Kopf stellen

Ich habe all diese Module (2.4) installiert. Ich habe Date, Datetime, Timestamp... alles ausprobiert. In dem Moment, wo ich ein Datum vor dem 1.1.1970 speichern will, rennt es sich tot.
Ich nutze eine PHP 5.1* Version.

Das kanns doch wirklich nicht sein. Seit 4 Tagen doktor ich an dem Mist rum, so langsam macht es mich sauer......
Es kann doch nicht so schwer sein, zumal das Date Format als varchar in der Datenbank abgelegt wird. Das Problem muss doch also irgendwo seitens des Date Modul liegen. Irgendwo passt doch irgeneine validierung nicht.

Dennis

  • Anmelden oder Registrieren um Kommentare zu schreiben

"Mein" DateTime-CCK Feld wird

Eingetragen von leda.ch (977)
am 10.06.2010 - 12:37 Uhr

"Mein" DateTime-CCK Feld wird als datetime im mysql gespeichert!!

Meine MySql-DB ist local, Server und Client Version 5.1.30, Apache/2.2.11 (Win32) DAV/2 mod_ssl/2.2.11 OpenSSL/0.9.8i mod_autoindex_color PHP/5.2.8

Was vielleicht noch ein Hinweis ist: Die Date-Zusatzmodule sind in einem Unterordner von Date anzusiedeln. Habe auch die 2.4-Versionen.
Vielleicht fehlt ein update.php-Lauf?
Kontrolliere auch die Datum und Zeit-Einstellungen, ev. nochmals speichern.
Cache leeren. Und dann schau mal, was mit einem neuen CCK-Feld für das Datum geschieht.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Also bei mir sieht die Konfig

Eingetragen von Timbalord (217)
am 11.06.2010 - 07:17 Uhr

Also

bei mir sieht die Konfig so aus:

Mysql 5.0.18 local, Apache 2.2.3 (Linux) PHP 5.1.2

Ich habe jetzt nochmal ein paar andere Datumsfelder angelegt. Auch mal die anderen Typen probiert. Es tut sich nichts. Auch update.php, cache leeren alles ohne Erfolg. Aus Verzweiflung habe ich mal auf die Date dev Version aktualisiert. Kein Erfolg.

Ich muss ja schon davon ausgehen, dass das ganze irgendwo damit zusammenhängt, dass irgendwo in dem Modul versucht wird, selbst ein als Date (varchar in der DB) deklariertes Feld durch eine Routine geschickt wird, die das ganze doch wieder in einen Unix Timestamp umwandelt, oder es zumindest versucht. Da ich PHP 5.1.2 nutze, kann es doch eigentlich nur in dem PHP4 Modul hängen.

Es nervt einfach nur noch.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Noch etwas

Eingetragen von Timbalord (217)
am 11.06.2010 - 07:25 Uhr

Noch etwas interessantes:

Wenn ich direkt in die Datenbank gehe und spaßeshalber mal das Datum auf einen Wert vor dem 1.1.1970 setze, also von Hand, interessiert es das das Frontend überhaupt nicht. Es wird pauschalt das alte Datum ausgegeben. Wie kann das denn sein? Cached er die Ausgabe noch irgendwo in der DB und liegt vielleicht dort der Hund begraben?

Also das gar nicht das Datemodul scheisse baut sondern irgendwo ein Cachemechanismus, der die Feldeingaben auch nochmal zwischenspeicher?

Dennis

  • Anmelden oder Registrieren um Kommentare zu schreiben

Eine Suche

Eingetragen von Timbalord (217)
am 11.06.2010 - 07:30 Uhr

Eine Suche ergab,

tatsächlich, es wird in der Tabelle cache_content auch gespeichert. Liegt es daran? Wie kann ich diesen Cachemechanismus aussetzen lassen?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Dieser Cache-Mechanismus ist

Eingetragen von leda.ch (977)
am 11.06.2010 - 07:59 Uhr

Dieser Cache-Mechanismus ist mir jetzt unbekannt...was mich aber immer noch vielmehr erstaunt ist, dass Du in der DB das Datums-Feld in einem Varchar hast, während bei es bei mir ein Datetime ist!?!
Hast Du denn ausprobiert, was passiert, wenn Du ein GANZ NEUES DateTime-CCK-Feld machst, vielleicht testweise sogar mal in einem neuen Inhaltstyp?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ja habe ich. Es passiert

Eingetragen von Timbalord (217)
am 11.06.2010 - 08:20 Uhr

Ja habe ich. Es passiert immer das selbe.

Aber jetzt halt dich fest ich habe weiter gesucht.
Ein Blick in die Errorlogs des Servers zeigen, dass jedesmal, wenn ich versuche ein Datum vor dem 1.1.1970 zu speichern, in der Datei

httpdocs/sites/all/modules/date/date_php4/date_php4.inc on line 736

die maximale Ausführungszeit von 120 Sekunden überschritten wird. Und als wenn ich es geahnt hätte, passiert das folgende in der Zeile:

case 13: // EU and other European countries
      // start of DST (last Sunday in March 1 am UTC)
      $dststart = strtotime("last sunday UTC", strtotime("1 april $year UTC"));

strtotime ist ja nunmal eine typische Unixtimestamp Geschichte. Das heisst, egal was ich versuche, an dieser Stelle wird immer versucht, mit einem Epochenzeitstempel zu arbeiten. Was bei einem Date in einem negativen Wert enden würde oder eben gar nicht. Muss ich nun die Datei hacken und mir etwas anderes für diesen Fall einfallen lassen?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ei, schau mal, was ein paar

Eingetragen von leda.ch (977)
am 11.06.2010 - 08:39 Uhr

Ei, schau mal, was ein paar Zeilen weiter oben drin steht:

  // This should really be done with date_date() to get the right timezone
  // adjustment for the year, but that leads to circular code that won't
  // work, so we're stuck with date(), which hopefully will create the right
  // year in most cases.

Jetzt würde ich wohl das Modul Date PHP4 deaktivieren...

  • Anmelden oder Registrieren um Kommentare zu schreiben

Tja, und wenn ich das mache,

Eingetragen von Timbalord (217)
am 11.06.2010 - 09:21 Uhr

Tja,

und wenn ich das mache, rennt die gesamte Seite anschließend überall, wo auf mein Datumsfeld zugegriffen wird in eine weisse Seite.

Und nun?

  • Anmelden oder Registrieren um Kommentare zu schreiben

error log

Eingetragen von stBorchert (6003)
am 11.06.2010 - 09:32 Uhr

Hallo.
Wenn Du eine weisse Seite bekommst, solltest Du in Dein error-log von PHP schauen. Dort siehst Du dann, welche Fehler die weisse Seite verursachen.

 Stefan

  • Anmelden oder Registrieren um Kommentare zu schreiben

Oh je, jetzt gehen mir die

Eingetragen von leda.ch (977)
am 11.06.2010 - 09:41 Uhr

Oh je, jetzt gehen mir die Ideen auch aus...

Wahrscheinlich würde ich jetzt an dem Punkt eine parallele Drupalinstallation aufziehen und gucken, obs dann damit geht. Dann wüsste ich, ob Drupal verhunzt ist, oder ob es ev. am Webserver/PHP liegt.
Ich hoffe, dass sich noch andere hier einklinken

  • Anmelden oder Registrieren um Kommentare zu schreiben

stBorchert

Eingetragen von Timbalord (217)
am 11.06.2010 - 09:45 Uhr
stBorchert schrieb

Hallo.
Wenn Du eine weisse Seite bekommst, solltest Du in Dein error-log von PHP schauen. Dort siehst Du dann, welche Fehler die weisse Seite verursachen.

 Stefan

Brauch ich gar nicht, kann ich mir ja so denken:
Ich habe PHP 5.1.2 installiert, also versucht die Dateapi ums Biegen und Brechen auf das PHP 4 Modul zuzugreifen. Das das aber scheinbar verbuggt ist, kann ich nicht mit und auch nicht ohne.

Das Projekt ist nur leider so dermaßen weit vorangeschritten, dass ein Umzug aktuell nicht in Frage kommt, also ein Umzug auf einen Server mit php 5.2.*
Da muss es doch wirklich eine Lösung geben. Wozu haben die sonst dieses Modul da hingeschmissen?

Grummel

  • Anmelden oder Registrieren um Kommentare zu schreiben

So, scheinbar kurz vor dem

Eingetragen von Timbalord (217)
am 11.06.2010 - 10:27 Uhr

So, scheinbar kurz vor dem Ziel:

ich habe alles andere jetzt ausgeschlossen und die Funktion, die den Fehler macht extrahiert

<?php
$year
= "1969";
echo
strtotime("last sunday UTC", strtotime("1 april $year UTC"));
?>

year >= 1970, es ist alles in Ordnung. year < 1970 rennt sich der Bereich tot. Nun ist die Frage, woran genau liegt es, weil strtotime ohne die Übergabe dieser Parameter mit einem Datum < 1970 wunderbar funktioniert.

Es ist auch nicht der part strtotime("last sunday UTC") oder der part strtotime("1 april $year UTC") alleine. Die Kombination macht es. Ich denke, dass man strtotime als zweites Argument keinen negativen Wert übergeben kann, den negativ wird der zweite strtotime Ausdruck, wenn eine Jahreszahl vor 1970 übergeben wird.

  • Anmelden oder Registrieren um Kommentare zu schreiben

strtotime

Eingetragen von stBorchert (6003)
am 11.06.2010 - 10:33 Uhr

Kurzes Zitat von strtotime:

Zitat:

Diese Funktion erwartet einen String mit einem Datum in US-englischem Datumsformat und versucht, dieses Format in einen Unix-Timestamp (die Anzahl der Sekunden seit dem 01. Januar 1970 00:00:00 UTC) zu übersetzen. Die Angabe wird relativ zum im now-Parameter übergebenen Timestamp oder der aktuellen Zeit, sofern now nicht unterstützt wird, ausgewertet.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Etwas weiter unten heisst es

Eingetragen von Timbalord (217)
am 11.06.2010 - 11:34 Uhr

Etwas weiter unten heisst es aber:

Zitat:

Hinweis: Der gültige Bereich eines Timestamp liegt typischerweise zwischen Fri, 13 Dec 1901 20:45:54 UTC und Tue, 19 Jan 2038 03:14:07 UTC. (Das sind die Datumsangaben, die dem minimalen und maximalen Wert eines vorzeichenbehafteten 32-bit Integer entsprechen.) Zusätzlich unterstützen nicht alle Plattformen negative Werte eines Timestamps, deshalb könnte der Wertebereich eines Datums durch den Beginn der Unix Epoche begrenzt sein. Das bedeutet, dass z.B. Zeitangaben vor dem 1. Januar 1970 auf Windowssystemen, einigen Linuxdistributionen und einigen anderen Betriebssytemen nicht funktionieren. Die PHP-Versionen 5.1.0 und neuer heben diese Beschränkung auf.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Fehler

Eingetragen von stBorchert (6003)
am 11.06.2010 - 11:55 Uhr

Naja, offensichtlich kommt Dein System mit den negativen Werten nicht klar.
Aber Du möchtest ja nicht ins Error-log schauen um dem Fehler eventuell auf die Spur zu kommen ...

  • Anmelden oder Registrieren um Kommentare zu schreiben

PHP Error Log: Nichts

Eingetragen von Timbalord (217)
am 11.06.2010 - 13:34 Uhr

PHP Error Log: Nichts neues

[11-Jun-2010 14:21:43] PHP Fatal error:  Maximum execution time of 120 seconds exceeded in

  • Anmelden oder Registrieren um Kommentare zu schreiben

Vorerst gelöst

Eingetragen von Timbalord (217)
am 14.06.2010 - 06:34 Uhr

Ich habe jetzt einfach in der
date_php4.inc
Zeile 616 die variable $regions auf 0 gesetzt, so dass es zu keiner Arbeit dieser Funktion kommt. Es scheint alles zu funktionieren danach.

Es ist nur eine vorläufige Maßnahme und zur Nachahmung nicht empfohlen, da völlig ungewiss ist, welche Auswirkungen das ganze sonst noch hat.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • für drupal11 ein Slider Modul
  • [gelöst] W3CSS Paragraphs Views
  • Drupal 11 neu aufsetzen und Bereiche aus 10 importieren
  • Wie erlaubt man neuen Benutzern auf die Resetseite zugreifen zu dürfen.
  • [gelöst] Anzeigeformat Text mit Bild in einem Artikel, Drupal 11
  • Social Media Buttons um Insteragram erweitern
  • Nach Installation der neuesten D10-Version kein Zugriff auf Website
  • Composer nach Umzug
  • [gelöst] Taxonomie Begriffe zeigt nicht alle Nodes an
  • Drupal 11 + Experience Builder (Canvas) + Layout Builder
  • Welche KI verwendet ihr?
  • Update Manger läst sich nicht Installieren
Weiter

Neue Kommentare

  • melde mich mal wieder, da ich
    vor 1 Woche 6 Tagen
  • Hey danke
    vor 2 Wochen 10 Stunden
  • Update: jetzt gibt's ein
    vor 2 Wochen 1 Tag
  • Hallo, im Prinzip habe ich
    vor 2 Wochen 5 Tagen
  • Da scheint die Terminologie
    vor 2 Wochen 5 Tagen
  • Kannst doch auch alles direkt
    vor 3 Wochen 2 Tagen
  • In der entsprechenden View
    vor 3 Wochen 2 Tagen
  • Dazu müsstest Du vermutlich
    vor 3 Wochen 2 Tagen
  • gelöst
    vor 5 Wochen 6 Tagen
  • Ja natürlich. Dass ist etwas,
    vor 6 Wochen 10 Stunden

Statistik

Beiträge im Forum: 250233
Registrierte User: 20451

Neue User:

  • ByteScrapers
  • Mroppoofpaync
  • 4aficiona2

» Alle User anzeigen

User nach Punkten sortiert:
wla9461
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3857
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 27 Gäste online.

Hauptmenü

  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche

Quicklinks I

  • Infos
  • Drupal Showcase
  • Installation
  • Update
  • Forum
  • Team
  • Verhaltensregeln

Quicklinks II

  • Drupal Jobs
  • FAQ
  • Drupal-Kochbuch
  • Best Practice - Drupal Sites - Guidelines
  • Drupal How To's

Quicklinks III

  • Tipps & Tricks
  • Drupal Theme System
  • Theme Handbuch
  • Leitfaden zur Entwicklung von Modulen

RSS & Twitter

  • Drupal Planet deutsch
  • RSS Feed News
  • RSS Feed Planet
  • Twitter Drupalcenter
Drupalcenter Team | Impressum & Datenschutz | Kontakt
Angetrieben von Drupal | Drupal is a registered trademark of Dries Buytaert.
Drupal Initiative - Drupal Association