Solution to the problem of obtaining millisecond time by python

  • 2021-10-25 07:24:21
  • OfStack

According to one statement on the Internet,

Obtaining ms level system time in python can be obtained in the following ways:


import datetime
print(datetime.datetime.now().microsecond)

However, the following code test shows that the value returned is not the value of ms, but the value of us:


import datetime 
def getTime_ms():
    return (datetime.datetime.now().hour*3600 +\
            datetime.datetime.now().minute*60+\
            datetime.datetime.now().second )*1000+\
           datetime.datetime.now().microsecond/1000
 
def timetime():
    t = getTime_ms()
    while getTime_ms() - t < 500:
        pass
    a = getTime_ms()
    print(t, a, a- t) 
  
if __name__ == '__main__': 
    from timeit import timeit
    t = timeit('timetime()', 'from __main__ import timetime', number=1)
    print(t)

Print results

(35460614, 35461114, 500) 0.499531984329

The above experiment is not very intuitive, change it to an intuitive point:


def timetime():
    t1 = datetime.datetime.now()
    while 1:
        t2 = datetime.datetime.now()
        if (t2 - t1).microseconds >= 1:
            print(t2,t2.microsecond,t1,t1.microsecond,(t2-t1).seconds)
            break 
 
if __name__ == '__main__':
    from timeit import timeit
    t = timeit('timetime()', 'from __main__ import timetime', number=1)
    print(t)
    #print (datetime.datetime.now())

Output

(datetime.datetime(2019, 4, 3, 10, 6, 20, 461882), 461882, datetime.datetime(2019, 4, 3, 10, 6, 20, 461863), 461863, 0) 7.10487365723e-05


def timetime():
    t1 = datetime.datetime.now()
    while 1:
        t2 = datetime.datetime.now()
        if (t2 - t1).microseconds >= 1000:
            print(t2,t2.microsecond,t1,t1.microsecond,(t2-t1).seconds)
            break 
 
if __name__ == '__main__':
    from timeit import timeit
    t = timeit('timetime()', 'from __main__ import timetime', number=1)
    print(t)
    #print (datetime.datetime.now())

Output

(datetime.datetime(2019, 4, 3, 10, 13, 52, 76548), 76548, datetime.datetime(2019, 4, 3, 10, 13, 52, 75547), 75547, 0) 0.00104904174805

Supplement: Python datetime Remove milliseconds to return to current time

The datetime module returns the current time


import datetime
if __name__ == '__main__':
    a = datetime.datetime.now().replace(microsecond=0)
    print(a, type(a))

Operation result:

2020-05-22 12:13:42 < class 'datetime.datetime' > Process finished with exit code 0


Related articles: