angular 使用datetime-local 传递日期的时候,前后端传递与解析

如果不覆盖,日期的这个toString方法就会导致传递到后台的是一个混乱的字符串 比如 Thu Oct 17 2019 10:51:38 GMT+0800 (中国标准时间),无法解析


        <label><span>起始时间</span><input ng-model="f_data.startTime" type="datetime-local"  step=1 class="form-control" ></label>
        <label><span>结束时间</span><input ng-model="f_data.endTime" type="datetime-local" step=1 class="form-control" ></label>

    function getPara(name) {
        var reg = new RegExp("\\b" + name + "=([^&]*)(&|$)", "i");
        var r = location.search. match(reg);
        if (r &&r.length>0) return decodeURI(r[1]);
    }
    function formatter(d){
        return d&&d.toLocaleDateString()+' '+d.toTimeString().substr(0,8) ||'';}
    Date.prototype.toString=function () {
        return formatter(this);
    };
    function eq(a,b) {
        if(typeof a =="object" ){
            return typeof b =="object" && JSON.stringify(a)==JSON.stringify(b);
        }
        return a==b;
    }

然后在后端上这样进行解析

public org.springframework.core.convert.converter.Converter<String, Date> dateConverter(){
        return new Converter<String, Date>(){
            @Override
            public Date convert(String source) {
                try {
                    if(source==null||source.length()==0)
                        return null;
//                   type="datetime-local"  step=1 数据的格式是 "2019-10-16T13:00"
                    if(source.contains("/"))
                        source=source.replace("/","-");
                    if(source.contains("T"))
                        source=source.replace("T"," ");
                    if(source.length()>19)
                        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS").parse(source);
                    if(source.length()>16)
                        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(source);
                    if(source.length()>10)
                        return new SimpleDateFormat("yyyy-MM-dd HH:mm").parse(source);
                    else if(source.length()>8)
                        return new SimpleDateFormat("yyyy-MM-dd").parse(source);
                    else
                        return new SimpleDateFormat("HH:mm:ss").parse(source);
                } catch (ParseException e) {
                    e.printStackTrace();
                }
                throw new RuntimeException(source+"\t格式既不是时间,也不是日期,或者完整的日期时间");
            }
        };
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值