49

これに関するいくつかの投稿を読んだことがありますが、機能するコードがいくつかあると思いました。2 つの値の差が 1 秒未満の場合、表示されているミリ秒は正しいです。

差が 1 秒を超える場合でも、ミリ秒の差しか表示されません。

以下のように。

正しい:

 now_wind 2013-08-25 08:43:04.776209 
 first_time_wind 2013-08-25 08:43:04.506301
 time_diff 0:00:00.269908
 diff 269

間違っています - これは 2000 + 76 のはずです?:

 now_wind 2013-08-25 08:43:25.660427
 first_time_wind 2013-08-25 08:43:23.583902
 time_diff 0:00:02.076525
 diff 76


 #!/usr/bin/env python
 import datetime
 import time
 from time import sleep
 first_time_wind = datetime.datetime.now()
 sleep (2)
 now_wind = datetime.datetime.now()
 print "now_wind", now_wind
 print "first_time_wind", first_time_wind
 time_diff_wind = (now_wind - first_time_wind)
 print "time_diff", time_diff_wind
 print "diff", time_diff_wind.microseconds / 1000
4

5 に答える 5

82

total_seconds メソッドを使用してみてください。

print time_diff_wind.total_seconds() * 1000

そのメソッドは次と同等です。(td.microseconds + (td.seconds + td.days * 24 * 3600) * 10**6) / 10**6

注: バージョン 2.7 以降で使用できます。

于 2013-08-25T08:04:19.013 に答える
45
>>> a = datetime.datetime.now()
>>> b = datetime.datetime.now()
>>> a
datetime.datetime(2013, 8, 25, 2, 5, 1, 879000)
>>> b
datetime.datetime(2013, 8, 25, 2, 5, 8, 984000)
>>> a - b
datetime.timedelta(-1, 86392, 895000)
>>> b - a
datetime.timedelta(0, 7, 105000)
>>> (b - a).microseconds
105000
>>> (b - a).seconds
7
>>> (b - a).microseconds / 1000
105

あなたのマイクロ秒には、経過した秒が含まれていません

于 2013-08-25T08:08:44.567 に答える
8

ドキュメントから:

インスタンス属性 (読み取り専用):

属性値

-999999999 か​​ら 999999999 までの日数

0 ~ 86399 秒

0 から 999999 までのマイクロ秒

マイクロ秒が 999,999 を超えることはありません。したがって、ミリ秒が 999 を超えることはありません。

于 2013-08-25T08:03:30.283 に答える