常见的时间戳问题
时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。
1、ajax在post请求服务器UrL地址的时候加上时间戳,有效防止缓存url地址重复在服务器端请求而导致前后传输数据不一致情况。
//解决浏览器缓存
function timestamp(url){
// var getTimestamp=Math.random();
var getTimestamp=new Date().getTime();
if(url.indexOf("?")>-1){
url=url+"×tamp="+getTimestamp
}else{
url=url+"?timestamp="+getTimestamp
}
return url;
}
2、java接口进程间传输的时间戳是精确到毫秒 多出来三个0,返回当前计算机时间(System.currentTimeMillis())精确到毫秒,js获取时间戳的getTime()方法精确到毫秒。
//获取当前时间,格式YYYY-MM-DD function getNowFormatDate() { var date = new Date(); var seperator1 = "-"; var seperator2 = ":"; var year = date.getFullYear(); var month = date.getMonth() + 1; var strDate = date.getDate(); var hours = date.getHours(); var minutes = date.getMinutes(); var seconds = date.getSeconds(); if (month >= 1 && month <= 9) {month = "0" + month;} if (strDate >= 0 && strDate <= 9) {strDate = "0" + strDate;} if (hours >= 0 && hours <= 9) {hours = "0" + hours;} if (minutes >= 0 && minutes <= 9) {minutes = "0" + minutes;} if (seconds >= 0 && seconds <= 9) {seconds = "0" + seconds;} var currentdate = year + seperator1 + month + seperator1 + strDate+" "+hours+seperator2+minutes+seperator2+seconds; return currentdate; }
//判断日期,时间大小 function compareTime(startDate, endDate) { if (startDate.length > 0 && endDate.length > 0) { var startDateTemp = startDate.split(" "); var endDateTemp = endDate.split(" "); var arrStartDate = startDateTemp[0].split("-"); var arrEndDate = endDateTemp[0].split("-"); var arrStartTime = startDateTemp[1].split(":"); var arrEndTime = endDateTemp[1].split(":"); var allStartDate = new Date(arrStartDate[0], arrStartDate[1], arrStartDate[2], arrStartTime[0], arrStartTime[1], arrStartTime[2]); var allEndDate = new Date(arrEndDate[0], arrEndDate[1], arrEndDate[2], arrEndTime[0], arrEndTime[1], arrEndTime[2]); if (allStartDate.getTime() >= allEndDate.getTime()) { alert("startTime不能大于endTime,不能通过"); return false; } else { alert(startDate+"startTime小于endTime"+endDate+",所以通过了"); return true; } } else { alert("时间不能为空"); return false; } }
3、@DateTimeFormat注解解决前端String传后端Date类型和@JsonFormat注解处理后端Date转前端String类型的问题。
//注解位置,字段Date类型, @JsonFormat加GMT+8,
@DateTimeFormat(pattern="yyyy-MM-dd")
private Date alertDate;
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
public Date getAlertDate() { return alertDate; }
public void setAlertDate(Date alertDate) { this.alertDate = alertDate; }
点点滴滴积累!