【问题标题】:how to create datetime from a negative epoch in Python如何在 Python 中从负时代创建日期时间
【发布时间】:2013-06-18 09:02:14
【问题描述】:

StackExchange 上的第一个计时器。

我正在使用 ArcGIS Server 和 Python。在尝试使用 REST 端点对地图服务执行查询时,我在 JSON 响应的负纪元中获取 esriFieldTypeDate 字段的值。 JSON 响应如下所示:

    {
  "feature" :
  {
    "attributes" : {
      "OBJECTID" : 11,
      "BASIN" : "North Atlantic",
      "TRACK_DATE" : -3739996800000,
    }
    ,
    "geometry" :
    {
      "paths" :
      [
        [
          [-99.9999999999999, 30.0000000000001],
          [-100.1, 30.5000000000001]
        ]
      ]
    }
  }
}

我所指的字段是上述 JSON 中的“TRACK_DATE”。 ArcGIS Server 返回的值始终以纪元以来的毫秒数为单位。 ArcGIS Server 还提供 HTML 响应,并且同一查询的 TRACK_DATE 字段显示为“TRACK_DATE: 1851/06/27 00:00:00 UTC”。

所以,日期是 1900 年之前,我知道 Python 内置的 datetime 模块无法处理 1900 年之前的日期。我使用的是 32 位 Python v2.6。我正在尝试使用将其转换为日期时间

datetime.datetime.utcfromtimestamp(float(-3739996800000)/1000)

但是,这失败了

ValueError: timestamp out of range for platform localtime()/gmtime() function

如何在 Python 2.6 中处理 1900 年以前的负数时代?我看过类似的帖子,但找不到解释使用负面时期的帖子。

【问题讨论】:

    标签: python arcpy


    【解决方案1】:

    这对我有用:

    datetime.datetime(1970, 1, 1) + datetime.timedelta(seconds=(-3739996800000/1000))
    

    datetime.datetime(1851, 6, 27, 0, 0)

    在 StackOverflow 上问这个问题会更好,因为它更特定于 Python,而不是特定于 GIS。

    【讨论】:

      【解决方案2】:
      if timestamp < 0:
          return datetime(1970, 1, 1) + timedelta(seconds=timestamp)
      else:
          return datetime.utcfromtimestamp(timestamp)
      

      【讨论】:

        【解决方案3】:

        您可以使用datetime 模块的datetimetimedelta 函数来完成此操作。

        其他答案将时间戳除以 1000 以将毫秒转换为秒。这是不必要的,因为timedelta 函数可以直接将毫秒作为参数。因此,这样做可能会更干净:

        datetime.datetime(1970, 1, 1) + datetime.timedelta(milliseconds=-3739996800000)
        

        正如你所料,它给出了datetime.datetime(1851, 6, 27, 0, 0)

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-08-06
          • 1970-01-01
          • 2017-08-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-01-10
          • 2022-10-16
          相关资源
          最近更新 更多