通常のUNIX時間(1970-01-01からの秒数)とMatplotlibの日付表現(-1BCまたは何かの最後の日からの日数、float)の間で前後に変換するplottm
関数のペアを作成しようとしていますunixtm
.
plottm
とが適切な逆数である場合unixtm
、このコードは同じ日付/時刻を 2 回出力します。
import time, datetime
import matplotlib.dates as dt
# Convert a unix time u to plot time p, and vice versa
def plottm(u): return dt.date2num(datetime.datetime.fromtimestamp(u))
def unixtm(p): return time.mktime(dt.num2date(p).timetuple())
u = 1270000000
print datetime.datetime.fromtimestamp(u), "-->", \
datetime.datetime.fromtimestamp(unixtm(plottm(u)))
残念ながら、それは 1 時間ずれています (これは一部のタイムスタンプでのみ発生します。それ以外の場合は、オフセットを挿入して処理します)。
おそらく関連:Localtimeの問題
更新: Matplotlib に固有ではない関連する質問: unixtime を datetime オブジェクトに変換してから再度戻す (逆の時間変換関数のペア)