【问题标题】:String to time stamp conversion字符串到时间戳的转换
【发布时间】:2018-07-15 12:08:13
【问题描述】:

我有一个包含大约 560 万个时间戳的数据文件,格式为“2016-10-17 15:00:40.739”。由于某种原因,它们现在都是字符串,我需要将它们全部转换为日期时间,因为稍后我需要计算它们组之间的差异(例如:stamp1 -> stamp2 = 2hours、4minutes 等)。

我发现了另一个问题“Converting string into datetime”,但我的格式不同,我无法得到适合我的答案。

非常感谢任何帮助。

【问题讨论】:

  • 如果你的文件是普通的文本文件,除了字符串之外没有其他方法可以在其中存储日期时间

标签: python string datetime type-conversion timestamp


【解决方案1】:

使用numpy的datetime64:

>>> np.datetime64('2016-10-17 15:00:40.739')
numpy.datetime64('2016-10-17T15:00:40.739')

您可以通过简单的减法或使用 numpy 的timedelta64 轻松找到差异:

>>> np.datetime64('2016-10-17 15:00:40.739') - np.datetime64('2016-10-15 15:00:40.739')
numpy.timedelta64(172800000,'ms')
>>> np.datetime64('2016-10-17 15:00:40.739') + np.timedelta64(1,'D')
numpy.datetime64('2016-10-18T15:00:40.739')

【讨论】:

  • 这可行,并且是一个非常简单的解决方案,但我将其作为输出:2016-10-17T15:00:40.739。有什么理由里面有一个 T 吗?
  • 您可以使用from datetime import datetime; numpy.datetime64('2016-10-19T15:00:40.739').astype(datetime) 转换为datetime 格式
【解决方案2】:

试试这个:

from datetime import datetime
a = "2016-10-17 15:00:40.739"
b = datetime.strptime(a,'%Y-%m-%d %H:%M:%S.%f')
print(b)
>>> datetime.datetime(2016, 10, 17, 15, 0, 40, 739000)

定义日期的格式。遵循本指南:https://www.tutorialspoint.com/python/time_strptime.htm

【讨论】:

    【解决方案3】:

    您可以使用 dateutil 模块将字符串日期转换为日期时间对象。

    from dateutil import parser
    dt =  parser.parse("2016-10-17 15:00:40.739")
    print dt
    print type(dt)
    

    输出:

    2016-10-17 15:00:40.739000
    <type 'datetime.datetime'>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-22
      • 2021-11-17
      • 2022-01-21
      • 2021-02-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多