Movable Typeの投稿が1時間ずれる問題の直し方
アメリカがサマータイムになって、Movable Typeに投稿した時間が
1時間ずれるようになったのですが、私だけに起きているわけでも
ないようなのでちょっとMovable Typeのソースをのぞいてみました。
で、lib/MT/Util.pmに問題と思われる箇所を発見。
$offset += 1 if (localtime $ts)[8];
GMT時間(グリニッジ標準時)を取得した後、ローカル(つまりサーバの置かれた場所)の
時間がサマータイムかどうかをYes/Noで判断して、その場所がサマータイムだと、
1時間をプラスしているようです。
私の借りているサーバはアメリカにあるはずですが、アメリカがサマータイムに
なると、この行に引きずられて日本時間が1時間ずれてしまっているみたいですね。
つまり、日本にいながらサーバをアメリカで借りている人のみに発生する問題
のようです。(いや、実はアウトソースでインドにあったりとか。。)
サマータイムのない日本ではこの部分は不要なので、根本的な解決
ではありませんが、とりあえずこの行をコメントアウトすることで対応
することにしました。
アメリカにいる人と私のサイトのMovable Typeを共有するときに問題が
生じますが、ま、そういうことはないので大丈夫でしょう。
Localizationをちょっと面白いと感じました。
以下、直し方です。
1. lib/MT/Util.pmファイルをサーバからFTPでダウンロードする
2. $offset += 1 if (localtime $ts)[8];という行を探す。 (171行目くらいです)
3. この行の先頭に#をつける
# $offset += 1 if (localtime $ts)[8];
↑こんな感じ
4. 編集したファイルを保存し、再度、FTPでもとにあった場所にアップロードする