常见的时间戳问题
时间戳是指格林威治时间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; }
点点滴滴积累!