1、前后台时间接收
① 后台Object接收
详见前后端时间格式
② 后台Map接收
如果后台是用Map接收,不限制前端传过来的时间格式
2、模糊搜索时间 / 时间比较
搜索功能页面,传"2018-01-04T02:22:38.998Z"、"2018-01-04 01:22:38" 时间格式都可以成功查询到结果,对应xxxMapper.xml中的时间如下
<if test="operateStartTime!=null">
AND <![CDATA[ b.OPERATE_TIME >= #{operateStartTime, jdbcType=VARCHAR} ]]>
</if>
<if test="operateEndTime!=null">
AND <![CDATA[ b.OPERATE_TIME <= #{operateEndTime, jdbcType=VARCHAR}]]>
</if>
模糊搜索时间格式.png
3、从数据库获取时间set到bean对象中
bean里面通常会有Date类型的数据,直接通过@ResponseBody返回出去的是一个长整型时间戳(从1970到该变量时间的毫秒数),关于原因,网上很多,此处不细讲。如果想要返回自定义的日期格式,如:yyyymmddhhmmss,需做相关处理,网上有很多处理方式,大体都是继承、重写,比较复杂。实际上JSON已有注解@JsonFormat支持,使用实例:
@JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSZ", locale = "zh", timezone = "GMT+8")
private Date createTime;
pattern 指定转化的格式,SSSZ(S指的是微秒,Z指时区)
此处的pattern和java.text.SimpleDateFormat中的Time Patterns一致
作用:1)入参时,请求报文只需要传入yyyymmddhhmmss字符串进来,则自动转换为Date类型数据。2)出参时,Date类型的数据自动转换为14位的字符串返回出去。
4、XML Schema 字符串数据类型
这是标准的XML Schema的"日期型数据格式”
T是代表后面跟着“时间”。Z代表0时区,或者叫UTC统一时间。
国内常见于MS Office Excel电子表格XML中的时间格式。
Java用SimpleTimeFormat可以随意处理这样的时间文本
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
sdf.setTimeZone(TimeZone.getTimeZone("UTC+8"));
String date = "2003-07-16T01:24:32Z";
try {
System.out.println(sdf.parse(date));
} catch (ParseException e) {
e.printStackTrace();
}
5、UTC和GMT时间区别
UTC是我们现在用得时间标准,GMT是老的时间计量标准。
UTC是根据原子钟来计算时间,二GMT是根据地球的自转和公转来计算时间,也就是太阳每天经过英国伦敦郊区的皇家格林威治天文台的时间就是中午12点。
由于现在世界上最精确的原子钟50亿年才会误差1秒(最精确原子钟问世:50亿年误差一秒),可以说非常精确。而GMT因为是根据地球的转动来计算时间的,而地球的自转正在缓速变慢,所以使用GMT的话,总有一天,打个比方,中午12点,并不是一天太阳当头照的时候,很可能就是早上或晚上。所以UTC更加精确。间——协调世界时(UTC)——由原子钟提供。
中国大陆、中国香港、中国澳门、中国台湾、蒙古国、新加坡、马来西亚、菲律宾、西澳大利亚州的时间与UTC的时差均为+8,也就是UTC+8。
网友评论