需求:用户购买产品,创建了一个订单,但是还么有支付,此时给用户三十分钟剩余支付时间,前台页面做倒计时功能,时间到达时,更改订单状态 ,输出的格式是:29:23

java 实现

package com.project.test;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date; import org.apache.commons.validator.Var;
import org.junit.Test;
import org.omg.CORBA.PRIVATE_MEMBER; import com.sun.org.apache.xerces.internal.parsers.IntegratedParserConfiguration; import IceInternal.Time;
import sun.util.logging.resources.logging; /*
* @author xiaoyi
* @see 倒计时转化工具类
*/
public class TimeConvert { private final static Long DEFAULT_TIME=(long) (30*60*1000); //超时时间 /*
* @see 将字符串转化为时间格式
*/
public static Date convertStrToDate(String strDate){
Calendar calendar=Calendar.getInstance();
if(strDate != null){
String[] dateAndTime=strDate.split(" ");
String[] dateStr=dateAndTime[0].split("-");
String[] TimeStr=dateAndTime[1].split(":");
calendar.set(Integer.parseInt(dateStr[0]), Integer.parseInt(dateStr[1])-1, Integer.parseInt(dateStr[2]),
Integer.parseInt(TimeStr[0]), Integer.parseInt(TimeStr[1]), Integer.parseInt(TimeStr[2]));
}
return calendar.getTime();
} /*
* 左边添加0
*/
public static String addLeftZero(Long tempNum){
String num="00";
if(tempNum<10){
num="0"+tempNum;
}else if(tempNum==0){
num= "00";
}else{
num=""+tempNum;
} return num;
} /*
* //将毫秒数转化为倒计时 eg :29:30
*/
public static String formatDate(Long num){
String tem="00:00";
if(num>0){
Long minute=num/60/1000;
Long yushu=num%(60*1000);
Long second=yushu/1000;
tem= TimeConvert.addLeftZero(minute)+":"+TimeConvert.addLeftZero(second);
}else{
tem= "00:00";
}
return tem;
} /*
* 计算还剩多少时间
*/
public String calculateTime(String initTime){
String remainTime="00:00"; //剩余时间
if(initTime !=null){
Date nowDate=new Date();
Long timeLength=(long) (TimeConvert.convertStrToDate(initTime).getTime()+DEFAULT_TIME-nowDate.getTime()); //求当时间和下单时间的差(毫秒)
remainTime=TimeConvert.formatDate(timeLength);
}
return remainTime;
} //测试
public static void main(String[] args) {
TimeConvert timeConvert=new TimeConvert();
SimpleDateFormat dateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(new TimeConvert().calculateTime("2017-12-29 15:09:56"));
      
} }

将后台的数据传递到jsp页面,怎么做倒计时,代码如下

var showTimeInterval;
$(function(){
setTimeout(function(){
if($(".needTime").length>0){
liveTime.initData('${orderDetail.ORDERID}');
//定时器,修改订单剩余支付时间
showTimeInterval=window.setInterval(
function(){
liveTime.remindTime($(".needTime").html(),".needTime",".title"); //将倒计时格式
},1000); //每一秒刷新一次
}
},1000) });

创建一个js

livetime.js

/*计算订单的剩余时间*/
var globeNowTime=new Date();
var oderId=null;
var liveTime={
initData:function(orderIdArgs){
oderId=orderIdArgs;
},
convertStrToDate:function(dateString) { //将字符串时间转化
if (dateString) { //2017-12-01 13:12:15
var arg1 = dateString.split(" "); //分割日期和时分秒
var arg2 = arg1[0].split('-');
var arg3= arg1[1].split(':');
var date = new Date(arg2[0], arg2[1]-1, arg2[2],arg3[0],arg3[1],arg3[2]); //分别对应 年 月 日 时 分 秒
return date;
}
},
addLeftZero:function(tempNum){ //两位数,左边补0
if(tempNum<10){
return "0"+tempNum;
}else if(tempNum==0){
return "00";
}else{
return tempNum;
}
},
formatDate:function(num){ //将毫秒数转化为倒计时 eg :29:30
if(num>0){
var minute=parseInt(num/60/1000);
var yushu=num%(60*1000);
var second=parseInt(yushu/1000);
return liveTime.addLeftZero(minute)+":"+liveTime.addLeftZero(second);
}else{
return "00:00";
}
},
updateOrderInfo:function(){ //更新数据库订单状态
var url = "/core/recordExplain.updLiveOrderState.do";
var postData={"orderId":oderId};
$.getMyJSON(url,postData,function(data){
console.info("更新成功");
});
},
globeCalculateTime:function(initTime){ //列表调用此方法 e 传入this
var remainTime="00:00"; //剩余时间
var timeLength=globeNowTime.getTime()-liveTime.convertStrToDate(initTime).getTime(); //求当时间和下单时间的差(毫秒)
remainTime=liveTime.formatDate(timeLength);
return remainTime;
},
calculateTime:function(initTime){ //定时器调用此方法
var remainTime="00:00"; //剩余时间
var nowDate=new Date();
var timeLength=nowDate.getTime()-liveTime.convertStrToDate(initTime).getTime(); //求当时间和下单时间的差(毫秒)
remainTime=liveTime.formatDate(timeLength);
return remainTime;
},
remindTime:function(getTime,className,className2){ //剩余时间倒计时
var tt="00:00";
if(getTime != null){
var tempTime=getTime.split(":");
var timeLength=parseInt(tempTime[0])*60*1000+parseInt(tempTime[1])*1000-1000;
if(timeLength<1000){ //当订单剩余时间小于1 秒的时候,开始更新数据库的订单状态
//TODO something
liveTime.updateOrderInfo(); //更新数据
//并且将定时器关闭
clearInterval(showTimeInterval);
//修改名称
$(""+className2).html("订单失效");
}else{
tt=liveTime.formatDate(timeLength);
} } $(""+className).html(tt);
} }

   屏幕已经开始倒计时

最新文章

  1. js ajax同步请求造成浏览器假死的问题
  2. 基本矩阵运算的Java实现
  3. iOS开发Xcode7真机调试教程
  4. 文件上传(java web)
  5. oracle-3-子查询和常用函数
  6. hdu 4324 Triangle LOVE(拓扑排序,基础)
  7. 物联网操作系统HelloX V1.77(beta)版本发布
  8. 【Java重构系列】重构31式之搬移方法
  9. jquery 银行卡号验证
  10. 网上查了点关于windows注册表的知识,发现基本名词没理解好,于是整理这篇笔记(可能个别地方不准确,先这么理解吧),有了这个理解,再去看网上的文章,就差不读了
  11. MYSQL auto_increment 、default 关键字
  12. BZOJ 1192 鬼谷子的钱袋 (二进制思想)
  13. VirtualBox集群建立和网络配置
  14. cordova 插件开发
  15. 修改oracle服务器端字符集
  16. 认识 var、let、const
  17. .net core 注入中的三种模式:Singleton、Scoped 和 Transient
  18. elasticsearch判断索引是否存在
  19. 20155219--pwd指令的简单实现
  20. SharePoint 取消分享时的默认发邮件

热门文章

  1. C语言的各种位运算符的操作简述
  2. VMnet1和VMnet8 未识别的网络的解决方法
  3. leetcode 660. Remove 9
  4. BZOJ_3172_[Tjoi2013]单词_后缀自动机
  5. VMware虚拟机安装WinXP出现错误output error file to the following location A:\GHOSTERR.TXT
  6. sizeof注意
  7. 《JAVA与模式》之调停者模式
  8. js方式的页面跳转
  9. Vue解决安卓4.4不兼容的问题
  10. linux文件名乱码时删除或改名的方式(转载)