やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

Pythonでフィード(RSS/Atom/RDF)から取得された日時テキストをdatetime型に変換する

 最新の環境構築が面倒なのでコード書いた。

成果物

問題

  • 日時テキスト形式がたくさんある(RFC1123, RFC3339)
  • Python3.5で文字列から日付型に変換しようとするとき
    • %z+09:00でエラーになる(:があるとダメ)

解決

 フィードで用いる日付形式を変換できるようにする。

所感

 全パターンに対応しているかはわからない。たぶん気づいたら順次対応。

 あと、必ずしもRFC1123, RFC3339だけではない。%Y-%m-%d %H:%M:%Sも入れた。もう面倒なんだよ。見たら日付ってわかるやつは自動的に日付にしてくれよ。

 あとISO-8601はよく使うと思うが、じつは自由度が高くてヤバイ。基本形がYYYYMMDDThhmmss+0900、拡張形がYYYY-MM-DDThh:mm:ss+09:00。基本形式と拡張形式との混在は許されない。まだまだあるが、書ききれないのでURL先に譲る。こんなの多すぎて対応しきれないわ。

日付フォーマットは統一したい

 私としては以下のようにに絞りたい。SQLite3に保存したり、ファイル名にしたり。

書式 用途 形態 時刻 Byte
YYYYMMDDhhmmss 記録用 短縮形 UTC 14
YYYYMMDDThhmmssZ 記録用 基本形 UTC 16
YYYY-MM-DDThh:mm:ssZ 記録用 拡張形 UTC 20

 で、表示するときはローカル時刻にしたりすればいい。+0900とかいらん。

  • YYYY-MM-DD hh:mm:ss(ローカル時刻)
  • H時間前(相対時間)

 時間の範囲指定するときはUI上ではローカル時刻や相対時間で見せる。でも内部ではそれをUTCに変換して比較させる。これでOK。

 和暦? 自動化を阻む害にしかならない。無駄を作って得するのは一部の特権階級だけ。多数の犠牲で少数の暴利を生むシステムは非合理的。存在が無駄。ヒャッハー無駄は排除だぜぇぇぇ!

対象環境

$ uname -a
Linux raspberrypi 4.19.42-v7+ #1218 SMP Tue May 14 00:48:17 BST 2019 armv7l GNU/Linux