2012-03-22 13 views
10
>>> a = str(datetime.now()) 
>>> a 
'2012-03-22 11:16:11.343000' 

私はそのような文字列を取得する必要があります:'16:11.34'pythonのdatetime.now()から分、秒、およびミリ秒を取得する方法は?

可能な限りコンパクトでなければなりません。

代わりにtime()を使用する必要がありますか? どうすれば入手できますか?

+0

「16:11.34」などと切り捨てられますか? –

+0

はい、トランケートまたはフォラムまたは解析します。知りません。 – Prostak

+1

@Marcin、私は何を試していいのか分からないので、何も試していません。 – Prostak

答えて

21

何について:

datetime.now().strftime('%M:%S.%f')[:-4]

私は、あなたが「ミリ秒のみ2桁」によって何を意味するかわからないんだけど、これは小数点以下2桁にそれを維持する必要があります。 strftime形式の文字列を操作して精度を下げると、よりエレガントな方法があるかもしれません。私は完全にはわかりません。

EDIT

%f修飾子があなたのために動作しない場合は、あなたのような何かを試すことができます。繰り返しますが、私はあなただけの精度を切り詰めたいと仮定してい

now=datetime.now() 
string_i_want=('%02d:%02d.%d'%(now.minute,now.second,now.microsecond))[:-4] 

を。

+0

'>>> datetime.now()。strftime('%M:%S.%f ')[: - 4]'結果: ''何かが正しくありません。 – Prostak

+0

'[:-4]'は "先頭から始まり最後の4文字を除外"を意味します。何らかの理由で '%f'はここでは動作しません。私の最終結果は' 36:31.f'が '36:'に切り詰められています。 @Prostakも切り捨てられた結果を得ているかもしれません... – Izkata

+2

何が間違っていますか?それはエラーを起こすか? %f修飾子はPython 2.6で追加されたと思いますが(私は肯定的ではありませんが)、あなたはどのPythonのバージョンを使用していますか? – mgilson

1

別の同様のソリューション:

>>> a=datetime.now() 
>>> "%s:%s.%s" % (a.hour, a.minute, a.microsecond) 
'14:28.971209' 

はい、私は、文字列が完全で書式設定取得できませんでした知っています。

+0

どのようなメソッド 'strftime()' ....私はミリ秒 'datetime.now()。strftime( '%M:%S。??')'のパラメータを理解できません。多分あなたは知っている? – Prostak

+0

整数値(** d ** igits)を扱っているので、 '%s'の代わりに'%d'を使用します。 – NuclearPeon

2

このソリューションは、@ gdw2で提供されるものと非常に類似しており、文字列の書式が正しくあなたが求めているものと一致することが行われているだけということ - 「できるだけコンパクトであるべき」

>>> import datetime 
>>> a = datetime.datetime.now() 
>>> "%s:%s.%s" % (a.minute, a.second, str(a.microsecond)[:2]) 
'31:45.57' 
+0

どうすれば 'strftime()'メソッドが呼び出されますか?ミリ秒 'datetime.now()。strftime( '%M:%S。??')'のパラメータは分かりません。多分あなたは知っている?あなたはstrftimeの使用する必要がある場合 – Prostak

+0

が、その後@mgilsonからソリューションはあなたがする必要があると思い何のように思える、それは次のようになります。datetime.datetime.now()はstrftime( "%のM:%S.のは%f")[: - 4]あなたは()のインポート日時 >>> datetime.datetime.now >>> ' を求めた正確な形式を取得するにはstrftimeを( "%M:%S.のは%f")[: - 4] " 14:07.90 '' – Pythomania

+0

%fは2.4 – Prostak

0

time.secondができますたくさんあなたのPythonの最上位に置いています。

0

古いスレッドを開いて申し訳ありませんが、私はそれが誰かを助ける場合に備えて転記しています。これは、Python 3に

from datetime import datetime 

Date = str(datetime.now())[:10] 
Hour = str(datetime.now())[11:13] 
Minute = str(datetime.now())[14:16] 
Second = str(datetime.now())[17:19] 
Millisecond = str(datetime.now())[20:] 

これを行うための最も簡単な方法のようですあなただけのint例えば

Hour = int(str(datetime.now())[11:13]) 
1
import datetime from datetime 

now = datetime.now() 

print "%0.2d:%0.2d:%0.2d" % (now.hour, now.minute, now.second) 

として、それらを投げ数として値が必要な場合はあなたが行うことができます&月などと同じです。

関連する問題