dt
とut
という関数のペアを作成しようとしていますが、通常のunix時間1970-01-01 00:00:00 UTC)とPython datetimeオブジェクトです。unimetimeをdatetimeオブジェクトに変換して元に戻す(逆変換の時間変換関数のペア)
dt
とut
が適切逆数であった場合、このコードは二度同じタイムスタンプを印刷するであろう:
import time, datetime
# Convert a unix time u to a datetime object d, and vice versa
def dt(u): return datetime.datetime.fromtimestamp(u)
def ut(d): return time.mktime(d.timetuple())
u = 1004260000
print u, "-->", ut(dt(u))
ああを、第二のタイムスタンプは最初未満3600秒(時間)です。 これは非常に特定のunixtimesでのみ起こると思います。おそらくその夏時間がスキップする時間帯の間です。 dt
とut
を書く方法はありますか。
関連質問:Making matplotlib's date2num and num2date perfect inverses
、関数は何もしませんが、と別の関数を呼び出す場合同じ引数を指定するだけでよい: 'dt = datetime.datetime.utcfromtimestamp'。関数はPythonのファーストクラスの市民です:それらを別の関数、関数からの戻り値などにパラメータとして渡すことができます。 – jfs
ああ、素敵なポイント!それを行う方が効率的か、簡潔さの問題か? 'def f(x):return foo(x)'と 'f = lambda x:foo(x)'についてはどうでしょうか? (私の想起は、それらが機能的にも効率的にも等価であるということです) – dreeves
'f = g'はf、gが同じ関数を参照する2つの名前であることを意味します。 'def'と' lambda'は新しい関数を作成します。 – jfs