recherche

Maison  >  Questions et réponses  >  le corps du texte

算法 - 如何使用python计算2个毫秒级字符串的计算

比如从源头数据可以获得2个时间,其形式为
"2017-03-09 08:51:51 615"
"2017-03-09 08:52:21 601"
要计算前后者的时间差

自己百度搜索了很多相关内容,都无法解决这个问题,datetime不知道如何转换毫秒,timedelta无法转换年份
因为业务的精度要求,不能省略后面的毫秒,要计算两者的时间差。当然基本上都是同一天,但考虑到业务是24小时进行的,也不能忽略前面的日期,万一问题正好发生在0点前后呢

高洛峰高洛峰2787 Il y a quelques jours671

répondre à tous(3)je répondrai

  • 迷茫

    迷茫2017-04-18 10:36:51

    datetimeVous pouvez convertir des millisecondes et la précision atteint les microsecondes. Ou peut-être que je n'ai pas bien compris la question ? Par exemple, vous pouvez utiliser le caractère de format %f, comme indiqué ci-dessous :

    >>> t1 = "2017-03-09 08:51:51 615"
    >>> t2 = "2017-03-09 08:52:21 601"
    >>> from datetime import datetime
    >>> a = datetime.strptime(t1, "%Y-%m-%d %H:%M:%S %f")
    >>> b = datetime.strptime(t2, "%Y-%m-%d %H:%M:%S %f")
    >>> c = b - a
    >>> c
    datetime.timedelta(0, 29, 986000)
    >>> c.microseconds
    986000
    

    Le troisième dans c ici est en microsecondes.

    répondre
    0
  • 巴扎黑

    巴扎黑2017-04-18 10:36:51

    2017-03-09 08:51:51Convertissez-le en horodatage, puis connectez la chaîne à "615", qui est un horodatage avec une précision à la milliseconde. Les deux valeurs d'horodatage ne peuvent-elles pas être calculées ?

    répondre
    0
  • 巴扎黑

    巴扎黑2017-04-18 10:36:51

    L'horodatage est en secondes, donc multiplier par 1 000 équivaut à des millisecondes, et les microsecondes divisées par 1 000 équivaut également à des millisecondes

    # coding: utf-8
    
    from datetime import datetime
    import time
    
    format = '%Y-%m-%d %H:%M:%S %f'
    a = datetime.strptime("2017-03-09 08:51:51 615", format)
    b = datetime.strptime("2017-03-09 08:52:21 601", format)
    
    t1 = time.mktime(a.timetuple()) * 1000 + a.microsecond / 1000
    t2 = time.mktime(b.timetuple()) * 1000 + b.microsecond / 1000
    
    print t2 - t1

    répondre
    0
  • Annulerrépondre