2011-11-23 20 views
8

Pythonのdatetimeクラスは、タイムスタンプからdatetimeオブジェクトを作成するfromtimestamp方法がありますが、他の方法でラウンドのためtotimestamp方法を提供していません... 私はtime.mktime(x.timetuple())ようなもので、あなたがdatetimeオブジェクトを変換できることを承知していますタイムスタンプにする必要がありますが、これは私にとっては複雑ではないようですので、なぜtotimestampメソッドがないのでしょうか?なぜpython datetimeクラスに 'fromtimestamp'メソッドがありますが、 'totimestamp'メソッドはありませんか?

+0

も参照http://stackoverflow.com/questions/8022161/python-converting-from-datetime -datetime-to-time-time –

+0

@Sven:私の質問は、それを変換するメソッドを要求するのではなく、 'datetime'モジュールにそのようなメソッドが存在しない理由を知りたいのです... –

+1

私didnこれは重複しているとは言いません。私はちょうどGoogleからのこのページをヒットする人々のために常に役立つ関連情報をリンクしました。 –

答えて

13

私はこのことについて何度か疑問を呈しながらこのことについてdiscussion/bug reportを覚えています。長いストーリーの短い:提案はたくさんありましたが、何らかの理由で受け入れられていません。

充実していますが、満足のいく解決策を提案しています

ポイントは、私は最高のthis replyにまとめたと思いますです。あなたが問題を過大に抱えているので、誰もあなたに満足のいく解決策を提示していません。私たちがまだuttotimestamp()を持っていない理由は、私が知る限りあなたとあなただけがutcfromtimestamp()をその動作範囲にわたってマイクロ秒の精度で逆転させる方法を受け入れないことです。そのようなメソッドは完全に合理的で受け入れられる解決策であり、Pythonに多くの価値を言語として追加します。

私は、この問題の進捗状況を片手でブロックすることで、意図せずにあなたがPythonユーザーの世界を痛感させたとは思わないと思います。私はそれらを見ました:学生、友人、同僚 - 非常にスマートで有能な人さえもそれによって悩まされています。誰もカレンダーモジュールを見ることは考えていません。たぶんあなたがこの中で闘うのを見たら、あなたは理解するでしょう。

この物語の最終結果は、それを自分で行う方法についてdocumentation was addedた:

# On the POSIX compliant platforms, `utcfromtimestamp(timestamp)` is 
# equivalent to the following expression: 
datetime(1970, 1, 1) + timedelta(seconds=timestamp) 

# There is no method to obtain the timestamp from a `datetime` instance, 
# but POSIX timestamp corresponding to a `datetime` instance `dt` can be 
# easily calculated as follows. For a naive `dt`: 
timestamp = (dt - datetime(1970, 1, 1))/timedelta(seconds=1) 

# And for an aware ``dt``:: 
timestamp = (dt - datetime(1970, 1, 1, tzinfo=timezone.utc))/timedelta(seconds=1) 
関連する問題