Wer ein Datum vor dem 1.1.1970 in eine Datumsfeld innerhalb von TYPO3 eingeben möchte stösst auf Schwierigkeiten:
Ein Datum wird in TYPO3 als UNIX-Timestamp abgelegt, d.h. es wird die Differnez in Sekunden zu 0:00 Uhr am 1.1.1970 abgelegt. Daraus folgt für ein Datum vor dem 1.1.1970 muss ein negativer Wert abgelegt werden. Nun war das Speicherfeld in bestimmten Bereichen vorzeichenlos und einige Funktionen rechnen immer noch vorzeichenlos (zb. Javascript unter Windows und auch einige mySQL-Funktionen).
Auch TYPO3 Javascript-Hilfsfunktionen rund um die Eingabe schneiden Datumsangaben vor 1970 ab.
Allerdings gibt es die Möglichkeit das auf eigenes Risiko !!! zu erweitern:
Dazu suche man in der Datei t3lib/jsfunc.evalfield.js nach folgenden Zeilen:
(je nach Version können die Zeilennummern etwas variieren)
234 function evalFunc_input(type,inVal) { : 258 switch (type) { : 318 case "date": 319 switch (theCmd) { : 335 default: : 348 var year = (values.values[3])?this.parseInt(values.values[3]):this.getYear(today); 349 if ( (year>=0&&year<38) || (year>=70&&year<100) || (year>=1970&&year<2038) ) { 350 if (year<100) { 351 year = (year<38) ? year+=2000 : year+=1900; 352 } 353 } else {year = this.getYear(today);} : 367 this.lastDate+=add*24*60*60; 368 if (this.lastDate<0) {this.lastDate=0;} 369 return this.lastDate;
dies ist zu Verändern in:
234 function evalFunc_input(type,inVal) { : 258 switch (type) { : 318 case "date": 319 switch (theCmd) { : 335 default: : 348 var year = (values.values[3])?this.parseInt(values.values[3]):this.getYear(today); 349 if ( (year >= 0 && year < 38) || (year >= 02 && year < 100) || (year >= 1902 && year < 2038) ) { 350 if (year<100) { 351 year = (year<38) ? year+=2000 : year+=1900; 352 } 353 } else {year = this.getYear(today);} : 367 this.lastDate+=add*24*60*60; 368 //if (this.lastDate<0) {this.lastDate=0;} 369 return this.lastDate;