javascript部分
分两种情况:
—-后台接收long型
——–js处理
(new Date()).getTime()//Date转long,默认new Date()可以把当前日期时间精确到秒
输出结果:1455862677881//即2016/2/19 14:17:57
long转date
var 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-22
console.log(afterDate);//2015-03-23
var timestamp =Date.parse(new Date(afterDate));
console.log(timestamp);//取出当前时间戳
输出结果:1455860246000//unix时间戳,到网站上面转码需要去除最后面**000**如下图
----------
input的输入框是date类型,只能精确到日期--时间自己ping
var today=new Date();
var h=today.getHours();
var m=today.getMinutes();
var s=today.getSeconds();
console.log(h+":"+m+":"+s);
输出结果:13:51:29
html5的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:00到24:00:00
if (!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) {
----------
日期处理到此前后端交互处理完成,其他的遗漏或者补充的日后会跟进的