对于日期类型,数据库MySQL中一般都是年月日的话选date类型,如果是精确到小时分钟的的一般都用datetime,然后再实体类里面统一映射成java.util.Date类型。
如:
1、数据库表字段:
birth_day datetime
2、对应的实体属性
import java.util.Date; public class UserEntity { //其他的属性略 private Date birthDay; }
3、通过ajax调用返回的json格式结果:
{uid: 5, userName: "张三4", age: 5, address: "北京", birthDay: 675010800000}
4、通过javasrcipt的new Date(date) //其中date为后台返回的long类型的日期, 构造相应格式的日期用于展示。
下面看看对比下几个快照。
数据库中的结果:
java后台处理的日期:
可以看出,“张三0” 这个用户 在数据库到java后台日期都是没有问题,为啥到前台就小了一个小时(1986-06-24 12:11:44 变成了 1986-06-24 11:11:44)。
后面百度才知道是因为是 夏令时的缘故,前台浏览器还是按当时实行夏令时的日期做的转换,日期只要是
在如下范围,都会出现上面的问题。
1986年至1991年,每年四月的第2个星期日早上2点,到九月的第2个星期日早上2点之间。
1986年5月4日至9月14日(1986年因是实行夏令时的第一年,从5月4日开始到9月14日结束)
1987年4月12日至9月13日,
1988年4月10日至9月11日,
1989年4月16日至9月17日,
1990年4月15日至9月16日,
1991年4月14日至9月15日。
因此如果我们日期有属于上面范围的,最好是后台转化成字符串格式,直接在前台显示。