时间戳问题

常见的时间戳问题

 

时间戳是指格林威治时间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+"&timestamp="+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; }

 

 

 点点滴滴积累!

posted @ 2019-08-29 16:35  不二.Q  阅读(184)  评论(0编辑  收藏  举报