美文网首页
前后端时间格式

前后端时间格式

作者: 墨色尘埃 | 来源:发表于2018-02-04 15:41 被阅读437次

前端传毫秒
1、不加@JsonFormat
前端:1517191582000(毫秒)
后台:private Date trialTime;
列表返回的时间格式:毫秒
2、加@JsonFormat
① @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
前端:1517191582000(毫秒)
后台:
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date trialTime;
列表返回的时间格式:yyyy-MM-dd HH:mm:ss

    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date trialTime;
    public Date getTrialTime() {
        return trialTime;
    }
    public void setTrialTime(Date trialTime) {
        this.trialTime = trialTime;
    }

② @JsonFormat(pattern="yyyy-MM-dd", timezone = "GMT+8")
前端:1517191582000(毫秒)
后台:
@JsonFormat(pattern="yyyy-MM-dd", timezone = "GMT+8")
private Date trialTime;
列表返回的时间格式:yyyy-MM-dd

前端传"2018-01-03T02:01:13.678Z"
1、不加@JsonFormat
前端:"2018-01-03T02:01:13.678Z"
后台:private Date trialTime;
列表返回的时间格式:毫秒
2、加@JsonFormat
① 不支持"yyyy-MM-dd HH:mm:ss"这种格式
② 支持"yyyy-MM-dd"这种格式
前端:"2018-01-03T02:01:13.678Z"
后台:
@JsonFormat(pattern="yyyy-MM-dd", timezone = "GMT+8")
private Date trialTime;
列表返回的时间格式:yyyy-MM-dd

    //报错@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    //不报错@JsonFormat(pattern="yyyy-MM-dd", timezone = "GMT+8")
    @JsonFormat(pattern="yyyy-MM-dd", timezone = "GMT+8")
    private Date trialTime;
    public Date getTrialTime() {
        return trialTime;
    }
    public void setTrialTime(Date trialTime) {
        this.trialTime = trialTime;
    }

    //报错@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    //不报错@JsonFormat(pattern="yyyy-MM-dd", timezone = "GMT+8")
    private Date trialTime;
    @JsonFormat(pattern="yyyy-MM-dd", timezone = "GMT+8")
    public Date getTrialTime() {
        return trialTime;
    }
    public void setTrialTime(Date trialTime) {
        this.trialTime = trialTime;
    }

前端传"yyyy-MM-dd HH:mm:ss"
1、不加@JsonFormat报错
2、加@JsonFormat
① 支持"yyyy-MM-dd HH:mm:ss"这种格式
前端:"yyyy-MM-dd HH:mm:ss"
后台:
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date trialTime;
列表返回的时间格式:yyyy-MM-dd HH:mm:ss
② 不支持"yyyy-MM-dd"这种格式,因为前端传的时间格式已经限定死了

前端传"yyyy-MM-dd"
1、不加@JsonFormat (注:get请求,但是是用@RequestParam Map formData接收的,所以不影响。见贵安项目ArticleListControl中articleInfo接口)
前端:"yyyy-MM-dd"
后台:private Date trialTime;
列表返回的时间格式:毫秒
2、加@JsonFormat
① 不支持"yyyy-MM-dd HH:mm:ss"这种格式
② 支持"yyyy-MM-dd"这种格式
前端:"yyyy-MM-dd"
后台:
@JsonFormat(pattern="yyyy-MM-dd", timezone = "GMT+8")
private Date trialTime;
列表返回的时间格式:yyyy-MM-dd

    //报错@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    //不报错@JsonFormat(pattern="yyyy-MM-dd", timezone = "GMT+8")
    @JsonFormat(pattern="yyyy-MM-dd", timezone = "GMT+8")
    private Date trialTime;

总结
Jackson不支持这种时间格式的:yyyy-MM-dd HH:mm:ss,试了一下,果然报错来了
Can not construct instance of java.util.Date from String value '2015-12-22 10:10:10': not a valid representation (error: Failed to parse Date value '2015-12-22 10:10:10': Can not parse date "2015-12-22 10:10:10": not compatible with any of standard forms ("yyyy-MM-dd'T'HH:mm:ss.SSSZ", "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", "EEE, dd MMM yyyy HH:mm:ss zzz", "yyyy-MM-dd"))
看提示好像只支持这几种:
"yyyy-MM-dd'T'HH:mm:ss.SSSZ", "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", "EEE, dd MMM yyyy HH:mm:ss zzz", "yyyy-MM-dd"

主要看前端到→后台是否需要序列化
get请求时
① 后台用@ModelAttribute T model方式接收前端数据,会把传进来的参数序列化成对象T,前端传的参数有一个是String类型的2018-12-25时间,但是对象T中是date类型,所以如果不做转换的话会报400错误,在对象T的对应参数上加@DateTimeFormat(pattern = "yyyy-MM-dd")。通过@DateTimeFormat这个日期格式化注解,就可以将前端传入的字符串格式化为日期类型可以识别的内容信息了。当然也可以使用@DateTimeFormat(iso=ISO.DATE)这样子的格式化来进行处理,效果是一样的。JsonFormat适用于json方式?

    /**
     * @param page 查询一般传入参数为current和size, 例如/listPage?current=1&size=5,
     * @return 返回分页数据
     */
    @RequestMapping(value = "/page", method = RequestMethod.GET)
    public ResponseObj<Page<T>> listPage(@ModelAttribute Page<T> page,
                                         @ModelAttribute T model) {

        return baseExecute.listPage(page, model, service);
    }

② 如果后台用@RequestParam Map formData接收前端参数的话,即使前端传的时间是yyyy-MM-dd方式也不会报错,因为Map可以接收任意类型的参数

    /**
     * 获取文章待办列表信息接口【需要根据角色过滤数据】
     */
    @RequestMapping(value = "/articleInfo", method = RequestMethod.GET)
    public ResponseObj<PageUtil> list(@RequestParam Map formData) {
        if(StringUtils.isEmpty(formData.get("sort"))) {
            formData.put("sort","NODE_ID,IS_TOP,-OPERATE_TIME");
        }
        CommonUtil.convertFormData(formData);

        Integer i = articleListMapper.count(formData);
        List<ArticleList> list = articleListMapper.list(formData);

        for (ArticleList article : list) {
            List<Attachment> attachments = attachmentMapper.list(article.getArticleId());
            article.setFilePath(attachments);
        }

        PageUtil pageUtil = new PageUtil(i, formData);
        pageUtil.setResultList(list);
        return new ResponseObj<>(pageUtil, RetCode.SUCCESS);
    }

post请求时
因为post请求是用@RequestBody

@JsonFormat与@DateTimeFormat注解的使用

相关文章

  • 前后端时间格式

    前端传毫秒1、不加@JsonFormat前端:1517191582000(毫秒)后台:private Date t...

  • 前后端时间格式交互

    前后端时间格式交互(spring boot + vue.js + element-ui) GMT/UTC时间格式:...

  • 前后端用时间戳还是字符串传输

    后端→前端 时间戳 在不知道前端需要什么时间格式的时候或者有的应用不同页面需要不同时间格式时,后台一般传时间戳给前...

  • ruoyi框架使用总结(一)

    1. 前后端返回longint数据精度缺失? 处理springboot 前后端精度问题?数据转换,长整型和时间格式...

  • Ionic2实战-时间转换库moment的使用

    前言 开发前端页面和后端系统都免不了和时间格式打交道,比如某件货物的创建时间,更新时间,下架时间等等等等。后端系统...

  • 自定义格式时间函数

    vue中将后端发来的日期格式化 在列表展示后端发来数据时,list接收的数据中有没有格式化的时间,看着让人很不舒服...

  • 格式化前端日期时间戳

    如何格式化前端日期时间戳内容 1、后端使用JsonFormat注解格式化日期,时间戳yyyy-MM-dd HH:m...

  • Android-记录一个时间格式的方法

    最近在项目开发当中,我们需要对后端接口返回的时间戳进行转换展示,展示格式大概是下面这样: 几秒前 几分钟 几小时 ...

  • uniapp时间戳转换成年月日时分秒的格式

    后端返回的时间格式是时间戳,需要以年月日的格式渲染在前端界面由于uniapp是基于vue的,所以对于时间的处理。我...

  • 【20001】Java常用注解

    @JsonFormat 后端返回Vo实体类,转化属性时间 通过注解转化属性时间格式在时间属性上加上JsonForm...

网友评论

      本文标题:前后端时间格式

      本文链接:https://www.haomeiwen.com/subject/uiiyaxtx.html