我是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年以前的时代?我查看了类似的帖子,但没有找到解释处理负数时代的。
datetime.datetime.fromtimestamp(-3739996800000//1000)
会引发OSError: [Errno 22] Invalid argument
错误。而在我的Linux机器上,它会返回预期的datetime.datetime(1851, 6, 27, 0, 0)
。 - AXO