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

   屏幕已经开始倒计时

js 和 java 将时间倒计时显示的更多相关文章

  1. 小程序,用js获取当前系统时间并显示

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  2. 前端js转换时间戳为时间类型显示

    //时间戳转换 function add0(m){return m<10?'0'+m:m } function formatDate(timestamp) { //timestamp是整数,否则 ...

  3. Java 获取当前时间及实现时间倒计时功能

    引言 在一些项目中或是一些特殊的业务场景中,需要用到显示系统的当前时间,以及一些固定的时间倒计时,时间到后做一些什么事情的业务 .接下来咱们就具体看看代码是怎么实现的: <%@ page lan ...

  4. js倒计时显示

    <!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>j ...

  5. js时间倒计时

    看了网上的其他的例子,觉得写的都有点复杂,不好理解,于是自己动手写了个. 本来想封装成jquery插件,但是觉得因为功能很简单,没有必要做成jquery插件,引用的时候不需要引入jqery库,这里直接 ...

  6. js获取当前日期时间同时显示星期

    JavaScript获取当前日期时间同时显示星期几,具体代码如下: <html> <head> <meta http-equiv="Content-Type&q ...

  7. 原生js 当前时间 倒计时代码

    源:https://www.oschina.net/code/snippet_2318153_54763 <!DOCTYPE html> <html> <head> ...

  8. Java 日期时间获取和显示

    Java正确获取星期Calendar.DAY_OF_WEEKhttp://chamcon.iteye.com/blog/2144433 Java SimpleDateFormat 中英文时间格式化转换 ...

  9. 在JSP页面里,时间控件的JS位置在下面然后就显示不出来

    在JSP页面里,时间空间的JS位置在下面然后就显示不出来,放到前面然后就显示出来了, 情何以堪啊,开始还以为是什么错误.

随机推荐

  1. Delphi汉字简繁体转换代码(分为D7和D2010版本)

    //delphi 7 Delphi汉字简繁体转换代码unit ChineseCharactersConvert; interface uses   Classes, Windows; type   T ...

  2. Nginx——静态资源服务器(一)

    java web的项目中,我们经常将项目部署到Tomcat或者jetty上,可以通过Tomcat或者jetty启动的服务来访问静态资源.但是随着Nginx的普及,用Nginx来作为静态资源服务器,似乎 ...

  3. Java正则表达式的用法

    /** * 校验时间格式,正确则返回true * @param xxx * @return */ private static boolean checkDateFormat (String xxx) ...

  4. sphinx索引部分源码续——过程:连接到CSphSource对应的sql数据源,通过fetch row取其中一行,然后解析出field,分词,获得wordhit,最后再加入到CSphSource的Hits里

    后面就是初始化一些存储结构,其中重点说下缓存出来的几个临时文件分别的作用.结尾时tmp0的存储的是被上锁的Index,有些Index正在被查询使用 故上锁.tmp1,即对应将来生成的spp文件,存储词 ...

  5. 杂项:IntelliJ IDEA

    ylbtech-杂项:IntelliJ IDEA 1.返回顶部   2.返回顶部   3.返回顶部   4.返回顶部   5.返回顶部     6.返回顶部   作者:ylbtech出处:http:/ ...

  6. VS2010 AnkhSvn

    有时候打开别的项目用的是 TFS等 造成 VS本来用的AnkhSvn失效了 .工具---选项----插件选择---

  7. UIBC 小註解(转载)

    转自:http://www.cash.idv.tw/wordpress/?p=7942 UIBC 是指 User Input Back Channel, 用在 WIFI Display 的情境之下. ...

  8. 版本管理工具 Git

    Git是目前世界上最先进的分布式版本控制系统(没有之一). 文章参考来源: https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248 ...

  9. 标准行cp功能

    #include<stdio.h> int main(int argc,char *argv[]) { FILE *src_fp,*des_fp; ]={}; ) { printf(&qu ...

  10. java 继承还是组合

    1.我真的需要上溯转型(upcasting)吗? 如果是,才会用到继承. 2.