ArcGIS中的日期类型 - esrixa - 博客园https://www.cnblogs.com/esrichina/archive/2013/02/04/2891505.html
rest服务接口中时间字段的查询方法为:Date(时间字段) = date '2012-01-10'
where处的查询语句:
经过测试,对于shapefile格式的数据发布的点图层,以下查询语句都可通过:
Date = date '01-10-2012 00:00:00'
Date = date '01-10-2012"
Date = date '01/10/2012"
Date = date '1/10/2012"
Date = date '1-10-2012"
Date = date '2012-1-10"
对于geodatabase中点图层发布的服务,以下查询语句可通过:
Date = date '01-10-2012 10:10:10'
Date = date '2012-1-05 8:20:20 pm'
Date = date '2012-1-05 20:20:20'
大整数问题:
但是我们发现查询结果中时间字段为一个大整数(Format选择了HTML),网上有服务的查询结果是时间格式(目前不清楚如何发布数据以便在Rest页面中能正确显示为时间而非大整数)。不过我们在代码中调用时通常使用json格式,它返回的都是一个大整数。这个大整数的含义是:自 1970 年 1 月 1 日起已经过的毫秒数(如果晚于1970年1月1日,则为正数,否则为负数)。下文会对大整数的处理进行探讨。
Flex/Java中调用
参见《利用ArcGIS Server REST API实现对Feature的编辑操作》和《Java中调用ArcGIS Server REST API》两篇文章,完成利用ArcGIS REST API获取日期信息。完成对结果的解析后,会得到一个大整数,这里以西安为例,得到的数值是1326190210000。
flex中
Flex中可利用构造函数完成从大整数到日期类型的转换:
var date:Date = new Date(1326190210000).
日期转换为大整数:
第一种:var date1:Number = Date.parse("2012/01/10 18:10:10 GMT+0800");//注意时区
第二种:var date2:Number = Date.UTC(2012,0,10,10,10,10,0);//月份范围是0-11.
利用Rest API实现新增功能时,如需构造时间字段,可将日期类型转成大整数,完成日期的添加。
部分服务也可利用这种形式("Date" : "09\/19\/2009"),但有些不行,赞不清楚原因。
java中
大整数转换为日期:
String str = "1326190210000";
Long lng = Long.parseLong(str);
Date date = new Date(lng);
日期转换为大整数:
第一种:long lng2 = Date.UTC(2012-1900,0,10,10,10,10);//年数需要减去1900
第二种:Calendar calendar = Calendar.getInstance();
calendar.set(2012,0,10, 18, 10, 10);
calendar.set(Calendar.MILLISECOND, 0);//设置下毫秒为0,否则得到的结果后三位不确定
long lng1 =calendar.getTimeInMillis();
第三种:Date.parse()和DateFormat类也可以。
jquery中要将时间戳转为日期:
new Date(-2209161600000).toLocaleDateString()