【问题标题】:How to convert strings to TimeStamps for compare?如何将字符串转换为时间戳以进行比较?
【发布时间】:2018-09-17 15:26:15
【问题描述】:

我有这样的字符串:

first = '2018-09-16 15:00:00'

second = '1900-01-01 09:45:55.500597'

我想比较它们。

我找到的像Convert string date to timestamp in Python 这样的所有方法都需要知道字符串的格式。

我不知道字符串的格式(参见firstsecond 之间的区别)我只知道它们可以转换为时间戳。

如何转换它们以便比较它们?

编辑: 我能得到的“最大”字符串是:

1900-01-01 09:45:55.500597

但我也可以得到:

1900-01-01
1900-01-01 09:45
1900-01-01 09:45:55

等等。

总是YYYY-MM-DD HH-MM....

【问题讨论】:

  • 我看到的唯一区别是第二个的毫秒数,如果这是唯一的区别,如果每个字符串获得相同数量的字符,您应该能够为所有内容假设相同的格式。除非从一个到另一个发生巨大的变化(yyyy-mm-dd,到 dd-mm-yyyy)
  • 你要么必须多次猜测格式(大概是少数几种),要么你可以使用dateparser 之类的东西,但这会增加开销
  • @RodolfoDonãHosp 格式将始终为 YYYY-MM-DD 我只是不知道之后会发生什么......如果我有几个小时和分钟。 second 是“完整”的。

标签: python string


【解决方案1】:

您可以使用pandas.to_datetime。它在字符串时间戳格式方面提供了很大的灵活性,您可以在单个字符串或时间戳的列表/系列/元组上使用它。

>>> import pandas as pd
>>> day = pd.to_datetime('1900-01-01')
>>> minute = pd.to_datetime('1900-01-01 09:45')
>>> second = pd.to_datetime('1900-01-01 09:45:55')
>>> subsecond = pd.to_datetime('1900-01-01 09:45:55.500597')
>>> assert subsecond > second 
>>> assert minute < second 
>>> assert day < minute 

【讨论】:

    【解决方案2】:

    您可以使用dateutil 模块(pip install python-dateutil):

    >>> from dateutil.parser import parse
    >>> parse('2018-09-16 15:00:00')
    datetime.datetime(2018, 9, 16, 15, 0)
    >>> parse('1900-01-01 09:45:55.500597')
    datetime.datetime(1900, 1, 1, 9, 45, 55, 500597)
    

    从其features列表中:

    对几乎任何字符串格式的日期进行通用解析;

    一旦你有了datetime对象,你可以直接比较它们,不需要计算时间戳。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-12
      • 2020-11-22
      • 1970-01-01
      • 2014-07-06
      • 2016-12-02
      • 1970-01-01
      相关资源
      最近更新 更多