关于java和javascript交互中的日期处理问题汇总

来源:互联网 发布:移动网络打不开黄页 编辑:程序博客网 时间:2024/06/06 01:51

javascript部分
分两种情况:
—-后台接收long型
——–js处理

(new Date()).getTime()//Date转long,默认new Date()可以把当前日期时间精确到秒输出结果:1455862677881//即2016/2/19 14:17:57long转datevar unixtime = new Date(1446810976000);输出结果:Fri Nov 06 2015 19:56:16 GMT+0800 (中国标准时间)获取n天后的日期var self=this;//这里的this是我的那个页面dom,里面包含各种方法var curDate=self.formatDate(new Date(),'yyyy-MM-dd');//格式化日期工具方法在下面有提供var afterDate= self.formatDate(new Date().getTime()+ 30*24*60*60*1000,'yyyy-MM-dd');//30天后console.log(curDate);//2015-02-22console.log(afterDate);//2015-03-23var timestamp =Date.parse(new Date(afterDate));console.log(timestamp);//取出当前时间戳输出结果:1455860246000//unix时间戳,到网站上面转码需要去除最后面**000**如下图----------input的输入框是date类型,只能精确到日期--时间自己pingvar today=new Date();var h=today.getHours();var m=today.getMinutes();var s=today.getSeconds();console.log(h+":"+m+":"+s);输出结果:13:51:29html5的input输入框的type datetime-local(精确到了时:分)如下图<input  type="datetime-local">需要自己处理,为啥?请看下面控制台输出var a=$0;console.log(avalue);输出结果:2016-02-12T12:23----------//因为多了个T。这个不知道是不是H5的bug,我是无法理解了,于是传入后台之前需要处理一下,我写了个replace方法。this.entity.publishDate = self.changeDateT(this.entity.publishDate)+":00";//这里面不加00的话转化成long型的时候也是会默认加00,下面说明new Date(2016-02-12 12:23).getTime()=new Date(2016-02-12 12:23:00).getTime();changeDateT:function(date){            return date.replace("T"," ");        }附上格式化日期的方法---------- /**         * 格式化日期         */        formatDate:function(date,fmt){            date = date || new Date().getTime();            fmt=fmt||'yyyy-MM-dd HH:mm:ss';            date = new Date(Number(date));            var  o  =   {                "M+" :  date.getMonth()  +  1, // 月份                   "d+" :  date.getDate(), // 日                  "H+" :  date.getHours(), // 小时                   "m+" :  date.getMinutes(), // 分                   "s+" :  date.getSeconds(), // 秒                    "q+" :  Math.floor((date.getMonth()  +  3)  /  3), // 季度                   "S" :  date.getMilliseconds()   // 毫秒               };            if  (/(y+)/.test(fmt))  {                fmt  =  fmt.replace(RegExp.$1,   (date.getFullYear()  +  "")     .substr(4  -  RegExp.$1.length));            }            for  ( var  k  in  o)                if  (new  RegExp("("  +  k  +  ")").test(fmt))  {                    fmt  =  fmt.replace(RegExp.$1,   (RegExp.$1.length  ==  1)  ?  (o[k])       :  (("00"  +  o[k]).substr((""  +  o[k]).length)));                }            return  fmt;        },----------到此前端各种日期时间传入后台之前的处理基本完成。----------

这里写图片描述

这里写图片描述
这里写图片描述

—-java部分接收Date
—-后端是springmvc的javabean接收数据
——–后端javabean中的处理

long型    private long invoiceCreatedAt;Date型    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")    private Date createDateStart;//case1    private String startTime;//case2    private Date paymentTime; //交易时间case3关于DateTimeFormat**是springmvc的一种注入有兴趣的可以百度下**下面是查询的时候需要对日期进行处理的一个例子//缺省查询时间范围是当前日期的前一个月这里param.getSatetTime是String类型容易出错的地方是查询应该从00:00:0024:00:00if (!StringHelper.isAnyEmpty(param.getStartTime())) {    queryParams.put("startTime", DateHelper.convertToStr("yyyy-MM-dd 00:00:00", new Date(new Long(param.getStartTime()))));} else {    queryParams.put("startTime", DateHelper.convertToStr("yyyy-MM-dd HH:mm:ss", DateHelper.getAfterDate(new Date(), -30)));}if (!StringHelper.isAnyEmpty(param.getEndTime())) {    queryParams.put("endTime", DateHelper.convertToStr("yyyy-MM-dd 24:00:00", new Date(new Long(param.getEndTime()))));} else {    queryParams.put("endTime", DateHelper.convertToStr("yyyy-MM-dd HH:mm:ss", DateHelper.getAfterDate(new Date(), 1)));}情况2:直接给javabean中的data型属性赋值     DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");        project.setPstartDate(df.parse(                DateHelper.convertToStr("yyyy-MM-dd HH:mm:ss", DateHelper.getAfterDate(new Date(), 1))));//竞标日期        project.setPfullDate(df.parse(                DateHelper.convertToStr("yyyy-MM-dd HH:mm:ss", DateHelper.getAfterDate(new Date(), 2))));//满标日期*/        project.setPvalueDate(DateHelper.getAfterDate(new Date(), 3));//起息日期        project.setPendDate(df.parse(                DateHelper.convertToStr("yyyy-MM-dd HH:mm:ss", DateHelper.getAfterDate(new Date(), 30))));//回款日期        project.setPrealendDate(df.parse(                DateHelper.convertToStr("yyyy-MM-dd HH:mm:ss", DateHelper.getAfterDate(new Date(), -30))));;//实际回款日期        project.setOverDate(df.parse(                DateHelper.convertToStr("yyyy-MM-dd HH:mm:ss", DateHelper.getAfterDate(new Date(), 47))));//项目结束日期;        project.setRemark("测试数据");附上工具类    /**     * @param currentDate 当前日期     * @param interval 跳跃的天数,负数向前跳,正数向后跳     * @return     */    public static Date getAfterDate(Date currentDate,int interval){        Calendar calendar = Calendar.getInstance();        calendar.setTime(currentDate);        calendar.add(Calendar.DATE, interval);        Date temp = new Date(calendar.getTimeInMillis());        Date result = parse(dateFormat(temp, YYMMDD), YYMMDD);        return result;    } /**     * 把当前时间转换成目标字符格式串     *     * @param pattern     *            格式     * @param date     *            需要转换的日期     * @return     */    public static String convertToStr(String pattern, Date date) {        SimpleDateFormat format = new SimpleDateFormat(pattern);        return format.format(date);    }传入scala的话java与scala的bean匹配有下----------java:public aJava(            RequestHeader requestHeader, PageRequest pageRequest,            Map<String, String> queryParams)scala:class aScala(requestHeader: RequestHeader, pageRequest: PageRequest, queryParams: java.util.Map[String, String]) extends OrderDbcActionHandler[ReceiptAccounts, ReceiptLineQueryResponse](requestHeader, null) {----------

日期处理到此前后端交互处理完成,其他的遗漏或者补充的日后会跟进的

0 0
原创粉丝点击