2017-04-15 9 views
0

私は日時文字列 "2017-02-14T18:21:14.080 + 05:30"を持っています。私が使用し コードは、私が手datetime.datetimeのオブジェクトが日時文字列のミリ秒単位の精度を設定する:Python

2017-02-14 18:21:14.080000+05:30 

ある

from dateutil.parser import parse 
print parse("2017-02-14T18:21:14.080+05:30") 

ですとにかくパイソンがあり、私は順番に3にタイムゾーン情報の前に表示されたミリ秒の値の精度を設定することができます

2017-02-14 18:21:14.080+05:30 
+0

は、なぜあなたはそのは限り値が正確であるように印刷方法を気にしていますか? –

+0

値は正しいですが、出力が供給されるプログラムにはこの方法が必要です。 –

答えて

0

ミリ秒で日付を表示するようにPythonに依頼する組み込みの方法はありません。あなたは、所望の結果を得るために、文字列操作のビットを行う必要があります :

from dateutil.parser import parse 
import datetime as DT 
date = parse("2017-02-14T18:21:14.080+05:30") 
microsecond = date.microsecond 
millisecond = int(round(microsecond/1000)) 
print(str(date).replace('.{:06d}'.format(microsecond), 
         '.{:03d}'.format(millisecond))) 

利回り

2017-02-14 18:21:14.080+05:30 

は、ソリューションおよびミリ秒にマイクロを変換する方法の 議論についてはthis postを参照してください。 のいずれかの難点は、date.microsecondが6 より小さい数字を返し、マイクロ秒が0の場合、一部のOSではstr(date)drop the microseconds altogetherとなる可能性があることに注意してください。この は、 が3桁にフォーマットされたミリ秒で置き換えられる前に、マイクロ秒から6桁のフォーマットに苦労している理由の1つです。

上記のコードを使用すると、0秒にマイクロ秒をドロップするOSでは、 ミリ秒は表示されません。あなたは 3に小数点以下の桁数をフォーマットし常にショーミリ秒にしたい場合、あなたは最初から日付文字列を構築する必要があります:

from dateutil.parser import parse 
import datetime as DT 
date = parse("2017-02-14T18:21:14.080+05:30") 
microsecond = date.microsecond 
millisecond = round(microsecond/1000) 
utcoffset = date.strftime('%z') 
utcoffset_string = '{}:{}'.format(utcoffset[:-2], utcoffset[-2:]) 
print('{}{}{}'.format(date.strftime('%Y-%m-%dT%H:%M:%S'), 
         '.{:03d}'.format(millisecond), 
         utcoffset_string)) 
+0

ありがとう、あなたのソリューションは私の必要性に合っています。私の友人は文字列の操作を提案しましたが、これを行うための関数が存在するかどうかを知りたいと思っていました。私はPythonを初めて使ったことがあります。 –

+0

解決策1では、ValueError:Unknownの形式コード 'd'が 'float'型のオブジェクトに対してエラーが発生しました。 dをfに置き換えようとしましたが、同じ文字列を返しました。すべてをintに変換し、コードが機能するように強制終了しました。ここで働いていたコードを残しておきます。再度、感謝します。 マイクロ= INT(dt.microsecond) ミリ秒= INT(ラウンド(マイクロ秒/ 1000)) プリント(STR(DT).replace( '{:06D}'。。フォーマット(マイクロ秒)、 」{。 03d} '。format(millisecond))) –

+0

訂正していただきありがとうございます。 – unutbu

関連する問題