Scanner: neue Anzeigen zuerst abfragen, Uhrzeiten korrekt anzeigen

Seit dem Wegfall der Altersgrenze lieferten BA und StepStone nur die
relevantesten Anzeigen aller Jahre - fünf Läufe lang 0 neue Treffer.
- BA: erst veroeffentlichtseit=7 (bis 200), dann ohne Grenze (bis 200)
- StepStone: sort=2 Seiten 1-2 plus Relevanz Seite 1
  (action=sort_publish hatte keine Wirkung)
- Dashboard liest DB-Zeitstempel als UTC (vorher 2 h zu früh)

Erster Lauf danach: 481 statt 298 Anzeigen, 40 neue Treffer.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
schakal00783
2026-09-29 17:28:04 +02:00
co-authored by Claude Opus 5.5
parent 0aa8f17b28
commit 651ad2b954
3 changed files with 69 additions and 10 deletions
+10 -2
View File
@@ -52,9 +52,17 @@ export const ScoreBox: React.FC<{ score: number }> = ({ score }) => {
);
};
/*
* Zeitstempel aus der Datenbank ("2026-09-29 11:18:31") sind UTC - Server und
* MariaDB laufen in UTC. Ohne das "Z" las der Browser sie als Ortszeit und
* zeigte Funde zwei Stunden zu früh an (13:18 erschien als 11:18).
*/
const parseDbDate = (value: string) =>
new Date(/[zZ]|[+-]\d\d:?\d\d$/.test(value) ? value : `${value.replace(' ', 'T')}Z`);
export const formatDateTime = (value: string | null) => {
if (!value) return '–';
const date = new Date(value.includes('T') ? value : value.replace(' ', 'T'));
const date = parseDbDate(value);
if (Number.isNaN(date.getTime())) return '–';
return date.toLocaleString('de-DE', {
day: '2-digit',
@@ -68,7 +76,7 @@ export const formatDateTime = (value: string | null) => {
/** "vor 3 Tagen" - fürs Alter einer Anzeige genauer als ein Datum. */
export const formatAge = (value: string | null) => {
if (!value) return 'unbekannt';
const date = new Date(value.includes('T') ? value : value.replace(' ', 'T'));
const date = parseDbDate(value);
const days = Math.floor((Date.now() - date.getTime()) / 86_400_000);
if (Number.isNaN(days)) return 'unbekannt';
if (days <= 0) return 'heute';