【问题标题】:convert string of millisecond into datetime in python在python中将毫秒字符串转换为日期时间
【发布时间】:2010-03-18 14:59:23
【问题描述】:

我是 Python 的新手。我想从我的日志文件中减去间隔时间,但问题是我无法将日志文件的毫秒字符串转换为日期时间格式。例如,我有 15:55:05.12345,我想从这个字符串中删除 5.12345 秒,并在 Python 中显示 15.55.00.00000 的结果。我怎样才能做到这一点?目前,我使用的是 python 2.5。

提前谢谢你。

对不起,我的意思是我想减去值,例如,删除 00:00:05.1000 所以,我应该得到15:55:00:02345

【问题讨论】:

    标签: python datetime python-2.5


    【解决方案1】:
    >>> import datetime
    >>> s = '15:55:05.12345'
    >>> datetime.datetime.strptime(s.rpartition('.')[0], '%H:%M:%S').strftime('%H.%M.00.00000')
    '15.55.00.00000'
    

    澄清后编辑
    Python 标准库无法做到这一点,只能直接使用字符串:

    >>> s[:6]+ '00' + s[-6:]
    '15:55:00.12345'
    

    【讨论】:

    • 对不起,我的意思是我想减去值,例如,删除 00:00:05.1000 所以,我应该得到 15:55:00:02345
    • 我必须处理巨大的日志文件。我不能手动设置所有字符串值。你有什么其他建议可以解决这个问题吗?
    • @newbie:我不明白你的反对意见?谁说你应该手动做?
    • 对不起,我的误解。现在我可以解决了。非常感谢!
    【解决方案2】:

    我看到你需要从值中减去,所以我会使用 timedelta 对象,因为你可以用它们做数学运算。

    >>> value = '15:55:05.123450'
    >>> m = re.match('(\d+):(\d+):(\d+\.\d+)', value)
    >>> hour = int(m.group(1))
    >>> min = int(m.group(2))
    >>> sec = float(m.group(3))
    >>> now = datetime.timedelta(hours=hour,minutes=min,seconds=sec)
    >>> str(now)
    '15:55:05.123450'
    >>>
    >>> delta = datetime.timedelta(seconds=5.1)
    >>>
    >>> earlier = (now - delta)
    >>> str(earlier)
    '15:55:00.023450'
    >>>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-11
      • 2012-09-12
      • 2020-12-11
      • 1970-01-01
      • 1970-01-01
      • 2013-02-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多