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

    原文地址:http://blog.csdn.net/java_cxrs/article/details/6004144 描述: 通过struts2实现多图片上传. 我使用的版本是2.2.1,使用的包有 ...

  2. Response.ContentLength获取文件大小

    Response.ContentLength返回的是请求内容的大小,而不是请求文件的大小,当我们用Http断点续传的时候,比如文件大小为100M,第一次下载的时候ContentLength的大小就是1 ...

  3. 常用的Sublime Text插件及安装方法

    Package Control 功能:安装包管理 简介:sublime插件控制台,提供添加.删除.禁用.查找插件等功能 使用:https://sublime.wbond.net/installatio ...

  4. svn 添加用户名密码

    1. 找到svn安装路径  我的是 /opt/svn/repositories/ (如果不知道,可以搜索 :find / -name authz) 2.进入该目录的conf,其中包含authz.pas ...

  5. Android JNI MAC OS环境配置

    前言—JNI技术简介 JNI是Java Native Interface的缩写,即“Java本地调用”,它是Java世界和Native世界的中介桥梁.其中Native世界一般指C/C++的世界.众所周 ...

  6. VS2013Xml文件节点导航插件开发

    一.功能描述 该插件的功能跟代码文件的导航功能类似,只是下拉框里的内容是元素的某一属性值,如图-1所示 图-1 当点击下拉框的选项后,会自动定位到该内容在xml文件的位置.此功能适用于xml文件内容较 ...

  7. Spark 大数据文本统计

    此程序功能: 1.完成对10.4G.csv文件各个元素频率的统计 2.获得最大的统计个数 3.对获取到的统计个数进行降序排列 4.对各个元素出现次数频率的统计 import org.apache.sp ...

  8. MySQL中怎么查询一张表的列数

    select count(1) from information_schema.columns where table_schema='dbname' and table_name='tbname;

  9. idea 设置项目编码

    目前我了解的设置idea编码有两种形式(但深层次不太了解) 方式一: 这个方式需要你点击要设置编码单个文件,选择编码.一次只能修改一个文件编码 方式二: 一般工作时使用这个方式,文件编码,选择项目文件 ...

  10. nginx下配置虚拟主机

    linux 虚拟机下配置虚拟主机 nginx.conf 文件不动, 在 conf.d 或者 conf 目录下 新建项目.conf server { listen 80; server_name loc ...