pynotifyとdate.strptimeの複合バグ

バグの種類

pynotifyをimportしたコードで、datetime.strptimeで、文字列を解析すると発生するバグ。Junとかの月・曜日が該当する。

解決方法

localeの問題らしく、情報が中国語しか無かった。

http://hi.baidu.com/esbat/blog/item/b520232d748ac93f359bf742.html

中国語読めないが、下の解決法(とおぼしきコード)を読む限り、Localeの問題のようだ。

書かれているようにすれば良く、私は以下のようなメソッドを作って解決した

from datetime import datetime
import locale

def fixDatetimeStrptime(string, format):
    oldlocale = locale.getlocale(locale.LC_TIME)
    locale.setlocale(locale.LC_TIME, 'C')
    Datetime = datetime.strptime(string, format)
    locale.setlocale(locale.LC_TIME, oldlocale)
    return Datetime

実に面倒な話である。pynotifyが悪いのか、dateの問題なのかは知らないけど。

余談

これが解決したので、pynotifyでpopupするようなTerminatterがめでたく完成した。-pオプションで拙作Twit Notifierと同等の機能を提供する。