JS对时间的相关处理函数与应用
2010-06-17 14:20
447 查看
现在在网上找有关JS对时间的处理的文章一大把,但是没有多少会讲得比较全面,大部分都是讲一方面或者只做一个简单的说明,所以,大家搜索的时候,文章一大把,但能够让人满意的却没有几篇。前几天在一个项目当中,要用到有关JS对时间的相关处理,实现起来不难,不过有些地方也确实容易出错。在这里,我只是有针对性的做下简单介绍,把本人在项目当中的相关经历写出来,与大家分享。
1、先前对JS当中时间函数做下简单的介绍:
2、对以上相关函数的实际应用。
从上面的代码当中,可能大家不仔细看,还看不出容易产生BUG的地方,呵呵~~~~
1.1、对月份进行了相关的处理
因为JS当中,通过JS函数取得的月份都是从0开始计数的,所以一年12个月,取出来的数据总会比实际月份要小1,所以我们把月份取出来后,都会做加1处理。
1.2、对时间进行了处理
因为,通过JS函数取出的月份、小时、分钟、秒等都是从1开始的,当数字小于10的时候,取出的数据就会是一位,这样的话,如果要把这个时间与对应的时间进行比较,那肯定得做些处理。在这里,我们把时间只有一位的,在其前面加0处理,这样就格式化了时间,比较起来就不会出BUG。
1、先前对JS当中时间函数做下简单的介绍:
new Date(); //取得(创建)当前时间 getYear(); //获取当前年份(2位) getFullYear(); //获取完整的年份(4位,1970-????) getMonth(); //获取当前月份(0-11,0代表1月) getDate(); //获取当前日(1-31) getDay(); //获取当前星期X(0-6,0代表星期天) getTime(); //获取当前时间(从1970.1.1开始的毫秒数) getHours(); //获取当前小时数(0-23) getMinutes(); //获取当前分钟数(0-59) getSeconds(); //获取当前秒数(0-59) getMilliseconds(); //获取当前毫秒数(0-999) toLocaleDateString(); //获取当前日期 toLocaleTimeString(); //获取当前时间 toLocaleString( ); //获取日期与时间 例如: var myDate = new Date(); //取得(创建)当前时间 myDate.getYear(); //获取当前年份(2位) myDate.getFullYear(); //获取完整的年份(4位,1970-????) myDate.getMonth(); //获取当前月份(0-11,0代表1月) myDate.getDate(); //获取当前日(1-31) myDate.getDay(); //获取当前星期X(0-6,0代表星期天) myDate.getTime(); //获取当前时间(从1970.1.1开始的毫秒数) myDate.getHours(); //获取当前小时数(0-23) myDate.getMinutes(); //获取当前分钟数(0-59) myDate.getSeconds(); //获取当前秒数(0-59) myDate.getMilliseconds(); //获取当前毫秒数(0-999) myDate.toLocaleDateString(); //获取当前日期 var mytime=myDate.toLocaleTimeString(); //获取当前时间 myDate.toLocaleString( ); //获取日期与时间
2、对以上相关函数的实际应用。
/** *author 李铁雄 * 增加世界杯赛事表,如果当前时间2小时内,当前场正在播放,由显示当场,否则显示下一场; */ var CompetitionList = new Array(new Array(new Array("06-11","22:00","南非 VS 墨西哥")),new Array(new Array("06-12","02:30","乌拉圭 VS 法国"),new Array("06-12","19:30","韩国 VS 希腊"),new Array("06-12","22:00","阿根廷 VS 尼日利亚")) ,new Array(new Array("06-13","02:30","英格兰 VS 美国"),new Array("06-13","19:30","阿尔及利亚 VS 斯洛文尼亚"),new Array("06-13","22:00","塞尔维亚 VS 加纳")),new Array(new Array("06-14","02:30","德国 VS 澳大利亚"),new Array("06-14","19:30","荷兰 VS 丹麦"),new Array("06-14","22:00","日本 VS 喀麦隆")) ,new Array(new Array("06-15","02:30","意大利 VS 巴拉圭"),new Array("06-15","19:30","新西兰 VS 斯洛伐克"),new Array("06-15","22:00","科特迪瓦 VS 葡萄牙")),new Array(new Array("06-16","02:30","巴西 VS 朝鲜"),new Array("06-16","19:30","洪都拉斯 VS 智利"),new Array("06-16","22:00","西班牙 VS 瑞士")) ,new Array(new Array("06-17","02:30","南非 VS 乌拉圭"),new Array("06-17","19:30","阿根廷 VS 韩国"),new Array("06-17","22:00","希腊 VS 尼日利亚")),new Array(new Array("06-18","02:30","法国 VS 墨西哥"),new Array("06-18","19:30","德国 VS 塞尔维亚"),new Array("06-18","22:00","斯洛文尼亚 VS 美国")) ,new Array(new Array("06-19","02:30","英格兰 VS 阿尔及利亚"),new Array("06-19","19:30","荷兰 VS 日本"),new Array("06-19","22:00","加纳 VS 澳大利亚")),new Array(new Array("06-20","02:30","喀麦隆 VS 丹麦"),new Array("06-20","19:30","斯洛伐克 VS 巴拉圭"),new Array("06-20","22:00","意大利 VS 新西兰")) ,new Array(new Array("06-21","02:30","巴西 VS 科特迪瓦"),new Array("06-21","19:30","葡萄牙 VS 朝鲜"),new Array("06-21","22:00","智利 VS 瑞士")),new Array(new Array("06-22","02:30","西班牙 VS 洪都拉斯"),new Array("06-22","22:00","法国 VS 南非")),new Array(new Array("06-23","02:30","希腊 VS 阿根廷"),new Array("06-23","22:00","斯洛文尼亚 VS 英格兰")) ,new Array(new Array("06-24","02:30","加纳 VS 德国"),new Array("06-24","22:00","斯洛伐克 VS 意大利")),new Array(new Array("06-25","02:30","喀麦隆 VS 荷兰"),new Array("06-25","22:00","葡萄牙 VS 巴西")),new Array(new Array("06-26","02:30","智利 VS 西班牙"),new Array("06-26","22:00","乌拉圭(A1) VS 韩国(B2)")) ,new Array(new Array("06-27","02:30","美国(C1) VS 加纳(D2)"),new Array("06-27","22:00","德国(D1) VS 英格兰(C2)")) ,new Array(new Array("06-28","02:30","阿根廷(B1) VS 墨西哥(A2)"),new Array("06-28","22:00","荷兰(E1) VS 斯洛伐克(F2)")) ,new Array(new Array("06-29","02:30","巴西(G1) VS 智利(H2)"),new Array("06-29","22:00","巴拉圭(F1) VS 日本(E2)")) ,new Array(new Array("06-30","02:30","西班牙(H1) VS 葡萄牙(G2)")) ,new Array(new Array("07-02","22:00","荷兰 VS 巴西")) ,new Array(new Array("07-03","02:30","乌拉圭 VS 加纳"),new Array("07-03","22:00","阿根廷 VS 德国")) ,new Array(new Array("07-04","02:30","巴拉圭 VS 西班牙")) ,new Array(new Array("07-07","02:30","乌拉圭 VS 荷兰")) ,new Array(new Array("07-08","02:30","德国 VS 西班牙")) ,new Array(new Array("07-11","02:30","乌拉圭 VS 德国")) ,new Array(new Array("07-12","02:30","荷兰 VS 西班牙")) ); var now = new Date();//取当前时间 var nowdaystr = ""//"0"+now.getMonth()+1 + "-" ; var nowdays = ""; var nowmonth = now.getMonth()+1; var nowday = now.getDate(); if(nowday<10){ nowdays = "0"+nowday; }else{ nowdays = nowday; } if(nowmonth<10){ nowdaystr = "0"+nowmonth+"-"+nowdays; }else{ nowdaystr = nowmonth+"-"+nowdays; } var hours = now.getHours(); var min = now.getMinutes(); var timestr = ""; var timeMax = ""; if(hours<10){ timestr ="0"+ hours+":"+min; if((hours+2)<10){ timeMax ="0"+ (hours+2)+":"+min; }else{ timeMax =(hours+2)+":"+min; } }else{ timestr =hours+":"+min; timeMax =(hours+2)+":"+min; } var listCount = CompetitionList.length; var showStr = "";//最终要显示的字符串; var flag = 0; for(var i=0;i<listCount;i++){ var currentcount = CompetitionList[i].length; if(CompetitionList[i][0][0] == nowdaystr){ for(var j=0;j<currentcount;j++){ var lastCount = CompetitionList[i][j].length; var begintime = CompetitionList[i][j][1]; if((timeMax>begintime)&&(timestr<begintime)){ showStr = CompetitionList[i][j][0]+" "+ CompetitionList[i][j][1]+" "+CompetitionList[i][j][2]; //取当场的数据; flag = 1; break; }else if(timeMax<begintime){ showStr = CompetitionList[i][j][0]+" "+ CompetitionList[i][j][1]+" "+CompetitionList[i][j][2]; //取当场的数据; flag = 1; break; }else if(timestr>begintime){ continue; }else{ if((j+1)==currentcount){ showStr = CompetitionList[i][j][0]+" "+ CompetitionList[i][j][1]+" "+CompetitionList[i][j][2]; //取当场的数据; flag = 1; break; }else{ continue; } } } }else if(CompetitionList[i][0][0] < nowdaystr){ continue; }else{ if(flag == 1){ break; }else{ showStr = CompetitionList[i][0][0]+" "+ CompetitionList[i][0][1]+" "+CompetitionList[i][0][2]; //取下一场的数据; break; } } }
从上面的代码当中,可能大家不仔细看,还看不出容易产生BUG的地方,呵呵~~~~
1.1、对月份进行了相关的处理
因为JS当中,通过JS函数取得的月份都是从0开始计数的,所以一年12个月,取出来的数据总会比实际月份要小1,所以我们把月份取出来后,都会做加1处理。
1.2、对时间进行了处理
因为,通过JS函数取出的月份、小时、分钟、秒等都是从1开始的,当数字小于10的时候,取出的数据就会是一位,这样的话,如果要把这个时间与对应的时间进行比较,那肯定得做些处理。在这里,我们把时间只有一位的,在其前面加0处理,这样就格式化了时间,比较起来就不会出BUG。
var nowmonth = now.getMonth()+1; //月份加1处理 var nowday = now.getDate(); if(nowmonth<10){ //月份只有一位的,在其前面加0格式化处理 nowdaystr = "0"+nowmonth+"-"+nowday; }else{ nowdaystr = nowmonth+"-"+nowday; } var hours = now.getHours(); var min = now.getMinutes(); var timestr = ""; var timeMax = ""; if(hours<10){ //小时也是一样的处理方法 timestr ="0"+ hours+":"+min; if((hours+2)<10){ timeMax ="0"+ (hours+2)+":"+min; }else{ timeMax =(hours+2)+":"+min; } }
相关文章推荐
- C/C++时间处理相关函数
- linux中与时间处理相关的函数
- JS获取时间的相关函数及时间戳与时间日期之间的转换
- JS-时间处理函数封装汇总 (更新中...)
- js 日期,时间函数 及相关运算大全
- JS中的与时间相关的函数(long与date,timestamp之间的转换)
- js 时间相关的一些函数
- JS处理时间相关
- js 时间函数应用加、减、比较、格式转换的示例代码
- 关于几个js获取当前时间和处理返回数据改变时间格式的函数
- JS倒计时器一只,顺便复习javascript时间相关函数
- cocos-js,时间相关的处理
- JS获取时间的相关函数及时间戳与时间日期之间的转换
- 【js基础】时间和日期相关操作函数
- MySQL日期和时间处理函数应用总结
- 基于mysql时间处理函数的应用详解
- JS获取时间的相关函数及时间戳与时间日期之间的转换
- C语言中时间调用处理的相关函数介绍
- C语言中,时间调用处理的相关函数介绍
- shell(1):shell基础及函数,字符串,if,while,时间处理等应用