Ora sbagliata quando si usa il date picker: bug?

Ciao,

Il mio Discourse (2.6.0.beta4) è configurato con il fuso orario predefinito “Europe/Paris” per le date locali, ma quando provo a selezionare un orario, l’ora visualizzata è errata, come mostrato in questo screenshot:

Anche se scrivo “20:00:00”, l’ora visualizzata è “Oggi, 22:00”. La funzione moment.tz.guess() eseguita nel mio browser restituisce “Europe/Paris”, quindi non riesco a capire cosa stia sbagliando.

Hai qualche idea?

Grazie,

3 Mi Piace

@j.jaffeux hai qualche idea su cosa possa causare questo?

2 Mi Piace

Penso che si tratti di una gestione errata delle virgolette francesi (bbcode, se ricordo correttamente); il problema è già stato risolto per la locale tedesca.

https://meta.discourse.org/t/locale-date-timezone-cooking-error-with-french-localization/161532

3 Mi Piace

Rimuovo le virgolette da tz, non è una soluzione a lungo termine, ma… Funziona :grin:

2 Mi Piace

Sì, scusa, ero via lunedì/martedì. Non riesco a riprodurlo in locale, ma credo sia lo stesso caso.

Ho optato per questa correzione:

Tecnicamente si tratta più di un bug relativo alla formattazione del testo/markdown che a un problema con le date locali; potremmo voler trovare una soluzione più globale. Anche se ho ricevuto lamentele su questo solo nel contesto delle date locali, immagino sia perché sono più utilizzate e più suscettibili di essere modificate manualmente.

4 Mi Piace

Non credo che stia funzionando; potrebbe esserci anche qualcosa legato alla condizione alla riga 99 di discourse-local-dates.js.es6

if (config.timezone && moment.tz.names().includes(config.timezone))

che non è vera (ma dovrebbe esserlo).

modifica
Ho appena capito che la correzione è stata commitata su un’altra branch, torno subito :sweat_smile:
… quindi no, ho controllato,

[date=2020-12-20 time=15:00:00 timezone=„Europe/Paris“]
[date=2020-12-20 time=15:00:00 timezone=Europe/Paris]
[date=2020-12-20 time=15:00:00 timezone="Europe/Paris"]
[date=2020-12-20 time=15:00:00 timezone=«Europe/Paris»]

sono corretto, corretto, errato, errato

1 Mi Piace

E anche, sulla mia tastiera francese AZERTY, le virgolette sono in realtà ". Non so nemmeno come fare « o » senza copiare/incollare, il che è probabilmente normale :thinking:

Di certo non rimprovero nulla di “sbagliato”:

E il punto è che non scrivi davvero queste citazioni tu stesso, si tratta di una conversione in corso.

1 Mi Piace

È strano, ho le 16:00 per gli ultimi due

Poiché riesci a riprodurre il problema, potresti provare ad aggiungere un log qui: https://github.com/discourse/discourse/blob/master/plugins/discourse-local-dates/assets/javascripts/lib/discourse-markdown/discourse-local-dates.js.es6#L15

console.log(matches[1]);

E mostrami esattamente cosa ottieni.

1 Mi Piace

Certo, certo! Ma qui mi hai fatto perdere il filo :smile: Immagino tu voglia un log di Rails? Non sono un esperto, solo un po’ appassionato!
E scusa, ho letto male un cinque come un sei o chissà cos’altro; funziona solo il terzo, è colpa mia. Il quarto non funziona nell’anteprima ma è corretto nel post elaborato :crazy_face:

1 Mi Piace

Ho inviato un’altra pull request, forse è meglio aspettare questa prima di scavare.

2 Mi Piace

Ciò che sono riuscito a vedere è che manca l’attributo “data-timezone” (quando qualcosa non funziona)

Messaggio

  Post Update (1.1ms)  UPDATE "posts" SET "raw" = '[date=2020-12-20 time=12:00:00 timezone=Europe/Paris]
[date=2020-12-20 time=12:00:00 timezone="Europe/Paris"]', "self_edits" = 3, "cooked" = '<p><span data-date="2020-12-20" data-time="12:00:00" class="discourse-local-date" data-timezone="Europe/Paris" data-email-preview="2020-12-20T11:00:00Z UTC">2020-12-20T11:00:00Z</span><br>
<span data-date="2020-12-20" data-time="12:00:00" class="discourse-local-date" data-email-preview="2020-12-20T12:00:00Z UTC">2020-12-20T12:00:00Z</span></p>', "baked_at" = '2020-10-21 15:25:53.050518', "updated_at" = '2020-10-21 15:25:53.050721' WHERE "posts"."id" = 1954
1 Mi Piace

Sì, perché non comprende le virgolette convertite, ecco perché sto cercando di forzarle in uno stato noto.

2 Mi Piace

Mi dispiace anche solo chiedere, ti lascerò lavorare dopo; avevo l’impressione che fosse il ; di \&laquo; a far fallire
&& moment.tz.names().includes(config.timezone). Potrebbe essere che config.timezone sia escapato in HTML?

1 Mi Piace

Nessun problema, potrei anche avere torto :smiley:

Quindi, ciò che chiedi è sostanzialmente quello che faccio, ma non nel momento in cui te lo aspetti; probabilmente potrebbe funzionare lo stesso. Quindi, ad esempio, prima della mia correzione, qualcosa come:

[date=2020-12-20 time=15:00:00 timezone=«Europe/Paris»]

avrebbe prodotto questi attributi nel markdown analizzato:

{"date"=>"2020-12-20", "time"=>"15:00:00", "timezone"=>"«Europe/Paris»"}

Il che rende l’errore evidente.

Dopo la mia correzione otteniamo:

{"date"=>"2020-12-20", "time"=>"15:00:00", "timezone"=>"Europe/Paris"}

Penso semplicemente che prima non avessi gestito tutti i casi di virgolette. Hai provato con il secondo commit che ho fatto?

2 Mi Piace

Sì…

Ma dato che il raw non è

[date=2020-12-20 time=15:00:00 timezone=«Europe/Paris»]

ma già

[date=2020-12-20 time=15:00:00 timezone="Europe/Paris"]

penso che qualcosa stia succedendo “più avanti lungo la linea” :thinking:, in realtà non so dove. \&laquo; e \&raquo; vengono introdotti.
Ah sì! Posso vederlo nell’anteprima del compositore
[date=2020-12-15 time=14:00:00 timezone="Europe/Paris"

[date=2020-12-15 time=14:00:00 timezone=« Europe/Paris »

1 Mi Piace

Sì, forse ci sono due problemi, lato frontend e backend, perché la correzione precedente ha sicuramente migliorato il caso tedesco. Penso di poter applicare la stessa regex anche al frontend. Vorrei solo riuscire a riprodurlo :sweat_smile:

Lo farò domani.

5 Mi Piace

@Benjamin_D / @j.jaffeux è ancora un problema?

1 Mi Piace

Penso di sì, ma sono un po’ indietro: sono ancora alla versione 2.6.0 beta5 :flushed:. Tuttavia, non ho visto alcun commit relativo a quel problema da ottobre.