后台实体日期类型是string,前端传递时间之类型转换

当实体对应的日期类型是string时,如果不做处理,前端传递到后台的时间将会被转换成类似“ Aug 21 2018 00:00:00 GMT+0800 (中国标准时间)”格式的字符串

这种格式的字符串使用SimpleDateFormat类并不能直接转换,类型不对,当然可以使用字符串截取的方式去转换,这种方式并不是这篇文章介绍的重点

字符串截取后转换的方式:

public final static String FORMAT_STRING = "yyyy-MM-dd HH:mm:ss";

    public final static String[] REPLACE_STRING = new String[]{"GMT+0800", "GMT+08:00"};

    public final static String SPLIT_STRING = "(中国标准时间)";

    public static Date str2Date(String dateString) {
        try {
            dateString = dateString.split(Pattern.quote(SPLIT_STRING))[0].replace(REPLACE_STRING[0], REPLACE_STRING[1]);
            SimpleDateFormat sf1 = new SimpleDateFormat("E MMM dd yyyy HH:mm:ss z", Locale.US);
            Date date = sf1.parse(dateString);
            return date;
        } catch (Exception e) {
            throw new RuntimeException("时间转化格式错误" + "[dateString=" + dateString + "]" + "[FORMAT_STRING=" + FORMAT_STRING + "]");
        }
    }

    public static void main(String[] args) {
        str2Date("Tue Aug 21 2018 00:00:00 GMT+0800 (中国标准时间) 00:00:00");
    }

如果不通过这种方式的话,可以通过选择日期时将时间处理成毫秒值,然后后台在进行转换即可

前端使用vue+element,所以,我是通过element现成的属性转,其他框架可以使用js实现(实现方式自行百度)

 <el-date-picker v-model="value3" type="date" placeholder="选择日期" format="yyyy 年 MM 月 dd 日" value-format="timestamp"> </el-date-picker>

 之后再后台接收时

SimpleDateFormat trante = new SimpleDateFormat("yyyy-MM-dd");
//转换日期格式
Date date = new Date();
date.setTime(“毫秒值”);
String format = trante.format(date);

这种方式还是比较简单的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值