2013-04-12 4 views
22

最後の深夜から経過した秒数を取得したいと思います。 Pythonで最もエレガントな方法は何ですか?Pythonの真夜中から秒を取得

+3

あなたがこれを行うことを試みましたか?私たちといくつかのコードを共有できますか? (私はdownvotesがこれのためだけであると確信しています...) – Levon

+5

実際に私はstackoverflowでその質問を探していたが、答えを得ることができませんでした。 Pythonのドキュメントに相談した後、私は好きな解決策を得ました。同じ問題を抱えている他の人を助けるために私は質問と答えとして自分の解決策を投稿しました。しかし、明らかに人々はそれが好きではない、http://blog.stackoverflow.com/2011/07/its-ok-to-ask-and-answer-your-own-questions/ – linqu

+1

'がここで宣伝されてもgeoffspear、Levon、gnat、A5C1D2H2I1M1N2O1R2T1、gaigeの本当の質問ではありません。私は強く反対します。 – EB88

答えて

26

現在の日付/時刻を返す関数への単一の呼び出しを作るために良いですか?

+0

なぜ1回の通話を使用する方が良いですか? – Dirk

+0

それ以外の場合は、 "今"とは何かの2つの概念が得られます。 –

+2

@Dirk - 私の 'now'が作成された瞬間は、秒数を計算したい瞬間です。一行に '今 'を、そして二行目に'真夜中'を置くと(ナノ/マイクロ/秒後に実行される)、計算が間違ってしまうかもしれません。その時に真夜中が起こったと想像してください。 – eumiro

3

私はそれを好みの問題で選択するように、そのよう

import datetime 
import time 

today = datetime.date.today() 
seconds_since_midnight = time.time() - time.mktime(today.timetuple()) 
+0

これがあなたの質問の一部であれば、質問を編集して元の投稿にこれをあなたの試みとして加える方が良いです。 – Levon

+3

現在の日付/時刻を返す関数を1回呼び出すほうがよいでしょう。あなたの4行目が真夜中に2ナノ秒前に実行されると想像してください。 – eumiro

+0

@eumiro:それを1行にマージしても、それは速くなりません。 –

12
import datetime 
now = datetime.datetime.now() 
midnight = now.replace(hour=0, minute=0, second=0, microsecond=0) 
seconds = (now - midnight).seconds 

または

import datetime 
now = datetime.datetime.now() 
midnight = datetime.datetime.combine(now.date(), datetime.time()) 
seconds = (now - midnight).seconds 

を行うだろう。

from datetime import datetime 

now = datetime.now() 
seconds_since_midnight = (now - now.replace(hour=0, minute=0, second=0, microsecond=0)).total_seconds() 

それともここに誰のための

datetime.now() - datetime.now() 

リターンゼロはtimedeltaを行います。

+0

ここにあります。 :-)それを同時に追加しました。それをテストするとき、私は間違ったものを持っていました。 –

+1

真夜中になる別の方法:['midnight = datetime(d.year、d.month、d.day)'](http://stackoverflow.com/a/33276464/4279)。 btw、 'mktime()'やequivを使わない答え。今日DSTの移行があった場合は失敗します。 – jfs

+0

正しいタイムゾーン実装を使用することもできます。 –

-3

代替:

from datetime import datetime 
seconds = (datetime.now() - datetime.today()).seconds 
+4

'datetime.today'は時/分/秒/マイクロ秒も返します。 – eumiro

+0

ええ、datetime.today()はdate.today()と似ていません。だから私はそれを以前に使ったことはないと思います。無意味な機能のようだ。 –

関連する問題