Insert Date のタイムゾーンが常に UTC に設定され、私のタイムゾーンが無視されます

「日付を挿入」ボタンで日付を作成すると、以下のような形式で生成されます。

[date=2019-08-20 time=20:00:00 timezone="Europe/Berlin"]

私のタイムゾーンは Europe/Berlin ですが、HTML の結果では「20:00」の代わりに「22:00」と表示されます。

生成されたコードを以下のように変更すると、問題なく動作します。

[date=2019-08-20 time=20:00:00 timezone=Europe/Berlin]

meta.discourse.org では正しく動作しています。私のフォーラムのバージョンは v2.4.0.beta2 +316 です。

よろしくお願いいたします。

ここで試してみましょう。私はフランスにいますが、同じタイムゾーンです。

[date=2019-08-20 time=20:00:00 timezone="Europe/Paris"]

2019-08-20T18:00:00Z

[date=2019-08-20 time=20:00:00 timezone=Europe/Paris]

2019-08-20T18:00:00Z

結果は以下の通りです

サーバーの時刻やタイムゾーンを UTC 以外に変更して再設定しましたか?

はい、ここで書いた通り動作します。おそらく、こちらのバージョンと私のバージョンの差分に何か問題があるのでしょう。以前、数回のアップデートを行う前に、すでに動作していたことを覚えています。

いいえ、まだUTCです。

お使いのブラウザは何ですか?これはサーバーとは関係ありませんが、お使いのコンピュータの時刻設定は正しく行われていますか?

Windows、Linux、AndroidでFirefoxとChrome/Chromiumをテストしました。どのブラウザでも同じ動作が確認されます。なお、私の時計は常にEurope/Berlin(ヨーロッパ/ベルリン)に設定されています。

現在 Discourse フォーラムを閲覧しているブラウザのコンソールで、以下を試してみてください:

moment.tz.guess()

と表示されます:"Europe/Berlin"

私のフォーラムでも meta.discourse.org でも同様です。

承知しました。今後数日中に調査いたします。情報ありがとうございます。

私も全く同じ問題に直面しています!引用符なしなら問題なく動作します。しかし、Discourse Editor は常に Europe/Berlin の代わりに “Europe/Berlin” を作成してしまい、プレビューでは間違った時刻が表示されてしまいます。これを修正することはできますか?

ChromeでもFirefoxでも、どのような試みを行っても再現しません。さらに調査が必要です。

Safari でこの問題が発生しました。Chrome や Firefox はまだ試していません。

この件に関する更新情報はありますか?

上記で言及されたのと同じ動作が発生しています。ダブルクォーテーション(“”)を外せば問題なく動作しますが、使用すると、システムはクライアントが実行されているタイムゾーンの UTC からの +/- 時間分を適用しているようです。

なお、以下のようにタイムゾーンに無意味な文字列を指定した場合も、同様の現象が起きます:
[date=2019-08-20 time=20:00:00 timezone="nonsense"]
または
[date=2019-08-20 time=20:00:00 timezone=nonsense]
2019-08-20T20:00:00Z

私も全く同じ問題が発生しています。これは「ドイツ語」環境でのインストールに起因する問題のようです。

面白いことに、domain.de/wizard で設定のリセットを試みました。そこでロケールを「英語(米国)」に変更し、ウィザードを最初から最後まで実行しました。英語設定では、時間を貼り付けると正しく表示されます。例えば、「Tomorrow 11:15 PM (Europe/Berlin)」と表示されますが、実際にはドイツ時間の 23:15 を入力しています。つまり、正しく表示されています。

その後、フォーラムを再度「ドイツ語」に戻し、新しい予約の時間を貼り付けると、再び「+1 時間」の効果が現れます(英語環境で貼り付けた時間はまだ正しく表示されています)。

これはサーバー時間の問題ではなさそうです。Europe のロケールと UTC の間で何かが衝突しているように見えます。

必要であれば、テストや追加の情報提供も喜んで行います。

Discourse を Docker 上で実行しています。

さらなるサポートをありがとうございます!

少し追加ですが、私の環境と公式のものとの間に、小さな違いがあることに気づきました。

「ユーザーのロケールを許可」オプションを無効化しています。そのため、ユーザーは自分で言語を変更できません。これが役立つかどうかはわかりません。

同じ問題を経験した他の方々、つまり @Daniel_Tesla @lorddevil@zogstrip @hewo7 さんの場合、ユーザーはインターフェースのロケール設定を変更できますか?ドイツ語版では、設定 › 一般設定:「ユーザーのロケールを許可」:「ユーザーに独自のインターフェース言語を選択させる」の項目です。

  • ユーザーのロケールを許可(有効)
  • ユーザーのロケールを許可(無効)
0 voters

現在のロケールがタイムゾーンに影響を与えるのは奇妙ですね :thinking:

@j.jaffeux さん、最近の修正でこれに対応されましたか?

必要であれば、テストやデバッグのサポートを喜んで行います。チームメンバーの中でこのトピックを詳しく確認したい方がいらっしゃいましたら、お知らせください。

いいえ、明日見てみます。

これは以下で修正されるはずです:

:tada: 情報ありがとうございます


より詳しい状況として、Discourse インスタンスがドイツ語ロケールに設定されている場合、引用符 " をドイツ語の引用符 „“ に置換してしまい、それがパースラーを破損させていたようです。

@gerhard 当面は local-dates 内で直接修正を行いました。チェーンのより上位で修正を試みるべきだと思いますか?

  • 一致した文字列を送信する前に parseBBCodeTag 自体で?
  • 整形済みテキスト内でしょうか?