timefmt-goというGoライブラリを公開してメンテしているのですが、最近タイムゾーン周りの対応が弱いことに気がついて実装していました。タイムゾーンオフセットの表記は +0900 のようにコロンを入れないほうが一般的だと思いますが、RFC3339では +09:00 のようにコロンありの形もvalidです。strftime では %:z によりこの形を出力し、strptimeの %z はコロンありなし両方の形をparseする必要があります。GNU拡張のstrftimeでは %::z を使うと秒まで表記し、%:::z ではオフセットの精度によっていい感じに表記するようです (分精度なら分までなど)。 $ date +%z +0900 $ date +%:z +09:00 $ date +%::z +09:00:00 $ date +%:::z +09 strptimeの他の言語の挙動を確認