JFinal 3.4 设置 json 时间格式无效

me.setJsonDatePattern("yyyy-MM-dd");


如上,设置了,无效,用的是JFinal Json;

//留意到JFinalJson类还有个下面这个参数
protected String timestampPattern;

//tojson
if (value instanceof Date) {
    //而且debug toJson方法的时候,走的是第一个条件,所以datePattern等于没用了。
    //我的字段是mysql datetime类型
    if (value instanceof Timestamp) {
        return "\"" + (new SimpleDateFormat(this.timestampPattern)).format(value) + "\"";
    } else if (value instanceof Time) {
        return "\"" + value.toString() + "\"";
    } else {
        result = this.datePattern != null ? this.datePattern : this.getDefaultDatePattern();
        return result != null ? "\"" + (new SimpleDateFormat(result)).format(value) + "\"" : "" + ((Date)value).getTime();
    }
}

//解决方法只能是单独处理才行
renderJson(JFinalJson.getJson().setTimestampPattern("yyyy-MM-dd").toJson(RetKit.ok("page",page)));


所以@JFinal 有没有考虑把timestamPattern弄成public static,提供全局默认支持

评论区

JFinal

2018-09-21 17:23

为什么无效? 这个是严格测试过的,一定有效的

小徐同学

2018-09-21 17:47

@JFinal tojson 跑这里 去了,if (value instanceof Timestamp) {
return "\"" + (new SimpleDateFormat(this.timestampPattern)).format(value) + "\"";
} 然而 timestampPattern 没全局设置。

JFinal

2018-09-22 11:02

@小徐同学 setJsonDatePattern 目前只针对 java.sql.Date、java.util.Date 类型做转换,java.sql.Timestamp 用的那个最长的 pattern

fansunion

2018-09-22 11:53

@小徐同学 我也正在看这个。

fansunion

2018-09-22 11:55

@JFinal 我正好也遇到这个问题,问下。
if (value instanceof java.util.Date) {
if (value instanceof java.sql.Timestamp) {
return "\"" + new SimpleDateFormat(timestampPattern).format(value) + "\"";
}
数据库用的DateTime,发现是java.util.date,为啥 进来正好,又判断为 java.sql.Timestamp。Timestamp extends java.util.Date

难道是因为 JFinal把数据的DateTime映射为 Timestamp类型,我去确认下。

小徐同学

2018-09-23 19:47

@JFinal @JFinal 问题是我的字段类型是java.util.date

热门反馈

扫码入社