js 和 java 将时间倒计时显示
需求:用户购买产品,创建了一个订单,但是还么有支付,此时给用户三十分钟剩余支付时间,前台页面做倒计时功能,时间到达时,更改订单状态 ,输出的格式是: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 将时间倒计时显示的更多相关文章
- 小程序,用js获取当前系统时间并显示
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 前端js转换时间戳为时间类型显示
//时间戳转换 function add0(m){return m<10?'0'+m:m } function formatDate(timestamp) { //timestamp是整数,否则 ...
- Java 获取当前时间及实现时间倒计时功能
引言 在一些项目中或是一些特殊的业务场景中,需要用到显示系统的当前时间,以及一些固定的时间倒计时,时间到后做一些什么事情的业务 .接下来咱们就具体看看代码是怎么实现的: <%@ page lan ...
- js倒计时显示
<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>j ...
- js时间倒计时
看了网上的其他的例子,觉得写的都有点复杂,不好理解,于是自己动手写了个. 本来想封装成jquery插件,但是觉得因为功能很简单,没有必要做成jquery插件,引用的时候不需要引入jqery库,这里直接 ...
- js获取当前日期时间同时显示星期
JavaScript获取当前日期时间同时显示星期几,具体代码如下: <html> <head> <meta http-equiv="Content-Type&q ...
- 原生js 当前时间 倒计时代码
源:https://www.oschina.net/code/snippet_2318153_54763 <!DOCTYPE html> <html> <head> ...
- Java 日期时间获取和显示
Java正确获取星期Calendar.DAY_OF_WEEKhttp://chamcon.iteye.com/blog/2144433 Java SimpleDateFormat 中英文时间格式化转换 ...
- 在JSP页面里,时间控件的JS位置在下面然后就显示不出来
在JSP页面里,时间空间的JS位置在下面然后就显示不出来,放到前面然后就显示出来了, 情何以堪啊,开始还以为是什么错误.
随机推荐
- 【扩展知识2】函数strlen()和非函数sizeof的使用
[扩展知识2]函数strlen()和非函数sizeof的使用 [扩展文件夹] strlen函数 sizeof ( 1 )函数strlen() 原型:size_tstrlen ( const char ...
- 【java报错】CacheLoader returned null for key class
CacheLoader returned null for key class cmd mvn eclipse:clean eclipse:eclipse mvn install -Dmave ...
- docker启动centos容器后如何用putty连接
在前面的文章中,我提到过,win10 docker启动容器时,只有配置了宿主机和docker容器的端口映射,外部应用才能访问到容器中的服务,比如映射到Nginx的80端口.现在我将宿主机的某个端口映射 ...
- order by 特殊排序技巧
if object_id('tempdb..#temp') is not null drop table #temp ), col2 )) insert into #temp ' ' ' ' go - ...
- iOS设备,fixed布局出问题
window.deviceId = '{{$deviceId}}'; window.iOS = navigator.userAgent.match(/(iPad|iPhone|iPod)/g) ? t ...
- apply current folder view to all folders
https://www.tenforums.com/tutorials/35093-apply-folder-view-all-folders-same-type-windows-10-a.html ...
- android 改变状态栏(StatusBar)颜色
public static void changeColor(Activity paramActivity, int paramInt1) { if (Build.VERSION.SDK_INT &g ...
- bzoj 2744 朋友圈
题目大意: 两个国家 各有A和B个人,每个人有一个数值. 若两个A国的人满足$val_i\space xor \space val_j \mod 2 =1$ 则他们为朋友 若两个B国的人满足$val_ ...
- mod_python
mod_python的确是一个让python程序员能够apache2写一些网站的工具.它是一个接口.过去一些python写的整站系统需要通过mod_python作为连接枢纽,将apache2与它们连接 ...
- go语言godep使用命令
godep 看见他的star比govendor,所以我使用它.官方地址 https://github.com/tools/godep install 1 go get github.com/too ...