Rispondo brevemente:

hai una ridondanza nel tuo codice. strtotime($annomesegiorno) non serve.

$giorno = strftime("%A", $ts);
LOL
Ho perso mezz'ora su questo problema nonostante avessi controllato l'utilizzo della funzione sul manuale php.
Per forza non funzionava, avevo scritto
$giorno = strftime("%A", strtotime($ts));

Alle 3 di notte io e le funzioni per le date siamo due estranei


So che le impostazioni locali non sono proprio una scienza esatta, ma avevo già verificato in passato che sul sistema che devo usare funzionano.

Il problema non è che funziona o non funziona e basta. Non funziona al primo caricamento della pagina che contiene il frame (e strftime è SOLO nel frame), mentre funziona ogni altra volta che ricarico solo il frame tramite un link. Ovviamente sia l'url del frame che il codice sono identici.
E' per questo che non mi sono dato pace. Anche se ho risolto con una case, un motivo per cui si comporta così ci sarà. Ovviamente è più probabile che l'errore sia nel mio codice, ma è assurdo che funzioni sempre tranne al primo caricamento visto che tra l'altro si tratta di quelle 4 righe di codice.

Comunque grazie a tutti per i consigli.