【问题标题】:Convert date to seconds [duplicate]将日期转换为秒[重复]
【发布时间】:2013-10-18 16:25:28
【问题描述】:

我正在寻找 python 等效的 GNU date(1) 选项。基本上我想将日期转换为秒,如下例所示,我尝试从 python 文档中查找,但找不到等效的时间模块。

$ convdate="Jul  1 12:00:00 2015 GMT"

$ date '+%s' --date "$convdate"

1435752000

来自GNU date(1) 手册页

-d, --date=STRING
              display time described by STRING, not 'now'

【问题讨论】:

标签: python


【解决方案1】:

mktime可用于计算输入的时间,单位为秒:

>>> import time
>>> m = time.localtime()#store it in a var 
>>> time.mktime(m)
o/p: 1435657461.0

【讨论】:

    【解决方案2】:

    据我了解,UNIX 将日期表示为 1970 年 1 月 1 日的偏移量,因此为了在 python 中执行此操作,您可以获得时间增量。特别是对于您的示例:

    from datetime import datetime
    a = datetime.strptime(convdate, "%b %d %H:%M:%S %Y %Z")
    b = datetime(1970, 1, 1)
    (a-b).total_seconds()
    

    输出是

    1435752000.0

    【讨论】:

      【解决方案3】:
      >>> x = datetime.strptime('Jul 1 12:00:00 2015 GMT', '%b %d %H:%M:%S %Y %Z')
      >>> x.timestamp()
      1435744800.0
      

      请注意,这是一个本地时间戳。我的时区是 UTC+2,因此比您预期的时间少 2 小时。如果你想要一个基于 UTC 的时间戳,你可以这样做:

      >>> from datetime import timezone
      >>> x.replace(tzinfo=timezone.utc).timestamp()
      1435752000.0
      

      【讨论】:

        【解决方案4】:

        您尝试进行的转换称为“自纪元以来的秒数”,并使用如下函数计算:

        def unix_time(dt):
            epoch = datetime.datetime.utcfromtimestamp(0)
            delta = dt - epoch
            return delta.total_seconds()
        

        您可以使用日期的每一部分直接加载日期时间,也可以从字符串中加载并计算秒数:

        >>> def unix_time(dt):
        ...     epoch = datetime.datetime.utcfromtimestamp(0)
        ...     delta = dt - epoch
        ...     return delta.total_seconds()
        ...
        >>> import datetime
        >>> a = datetime.datetime(2015, 07, 01, 12, 00, 00)
        >>> print a
        2015-07-01 12:00:00
        >>> print unix_time(a)
        1435752000.0
        >>>
        

        注意:如果你想去掉最后一个 .0,你可以使用 long(unix_time(a))

        希望对你有帮助!

        【讨论】:

          猜你喜欢
          • 2020-09-08
          • 2013-08-18
          • 1970-01-01
          • 2017-12-21
          • 2017-07-11
          • 1970-01-01
          • 2015-10-06
          • 2019-12-24
          • 1970-01-01
          相关资源
          最近更新 更多