ホンマか工藤! じゃなく半澤!
半澤頭取も倍返しだって言うのかな?

mstdn.guru/@hideji/10680454635

あれあれ?
3時間後の予約投稿でトゥートしたのに即時トゥートになってしまう?

@TOCATTI SubwayTooterからかな? バグかもしれないので調べますね!

@noellabo
そうです.よろしくお願いします🙇‍♂️
別アカでの投稿も試して,クライアント側かインスタンス側か挙動を確認しますね.

@noellabo
銀河丼及びPhotodnで試しましたが,どちらも予約投稿が機能しませんでした.

Subway Tooter 4.5.5を使用していますが,私見ながらクライアント側のバグではないかと思います.

@TOCATTI SubwayTooter(およびTheDesk)が、予約投稿の日時にタイムゾーンを付加しない形式でPOSTすることと、それを解釈するFedibird側の仕様の問題で、9時間の時差が発生してしまい、既に過ぎた時間を指定したということで即時投稿されていた模様です。

MastdonのAPI仕様としてはFedibirdの解釈が正しそうなのですが、長年の挙動と異なるため、Fedibirdもそちらにあわせて解決を図るつもりです。

なお、この原因から考えると、銀河やPhotodonがうまくいかないのは想定外です。別の何かあるかな…….。

たしかディスコでUTC限定と聞いてああしたんですよね。サーバ側が期待してる
フォーマットは何なのです?

@tateisu @TOCATTI 現状のUTCの日時表現に、タイムゾーンZを末尾につけてもらえれば曖昧さがなくなるので、それがベストかと。

Mastodon本家はRailsのto_datetimeを、今回FedibirdではRailsのto_timeを使っていたのですが、タイムゾーンがついてない場合の挙動が異なり、前者はUTCで解釈、後者はローカルタイムで解釈となっています。

あーやはりそのあたりを変更してましたか…。Zの付与はissueたてて検討します。 github.com/tateisu/SubwayToote

@tateisu @noellabo
銀河丼及びPhotodnもAPIに準拠するよう解釈しているのかな···:blobcatthink:
Subway Tooter側がPOST時にタイムゾーンを付与するよう改善されたら問題は解消しそうです.(それはインスタンス管理者の分掌ではないですけども)

お調べいただきありがとうございました🙇‍♂️

そもそもAPIにはタイムゾーンなしの場合にどうするという記載はないし、ISO8609でもタイムゾーンなしの日時指定は許容されてるのです。「クライアントがタイムゾーンを省略した際にサーバ側のローカルのタイムゾーンで解釈される」という改造は別に何かに準拠してる訳でもありません。

むしろ国際化の観点ではUTCで統一されてた方が良いまであるので、Fedibirdの今回のは「ああ単一国向けサーバなんだな」という印象があります。

フォロー

@tateisu @TOCATTI まあ印象については感想ですのでそのまま受け止めますが、単一国向けとする意図はありません。目下、国際化の作業中です。

ISO 8601でタイムゾーンを指定しない場合の解釈は、ローカルタイムとするのが正しいように思われます。原本の規格書をあたろうとしているのですが、高いですね……。

rubyがDateTimeをdeprecatedとしてTimeに移行しており、Time.iso8601がタイムゾーンなしをローカルタイムとして解釈すること、momentや、今回採用したdate-fnsなどでも同様に解釈をすることもあり、to_datetimeの使用・仕様は見直した方がよいと考えています。

まぁ、いずれにしても非互換は適切ではないため、本家の挙動にあわせます。変更が必要な場合は本家の方で対応します。

「サーバ側の」ローカルタイムに合わせる利点はそれこそ単一国向けサーバにしかないと思います。MastodonはそのあたりAPIの入力も出力もむしろUTCで統一してますね。

@tateisu @TOCATTI そのあたりを踏まえると、「ISO 8601で解釈するが、タイムゾーンがない場合はUTCとみなす」と本家のAPI仕様に注釈明記する方向が良さそうですね。

ログインして会話に参加
Fedibird

様々な目的に使える、日本の汎用マストドンサーバーです。安定した利用環境と、多数の独自機能を提供しています。