• js写的闹钟,支持多个闹钟


    因为玩一个游戏,该游戏可以支持多个号,每个号有好多等时间的任务。

    来回切换看,太耽误时间。手机的闹钟操作太麻烦。

    所以写了一个使用配置文件的闹钟,简单方便。

    var ForReading = 1, ForWriting = 2;
    var configPath = "./ta.txt";
    
    function getTs(){
    	return Math.floor((new Date()).getTime()/1000);
    }
    function GetEverything()
    {
        try{
            var fso, f;
            fso = new ActiveXObject("Scripting.FileSystemObject");
            f = fso.OpenTextFile(configPath, ForReading);
    		var r = f.ReadAll();
    		f.close();
            return r;
        }catch(e){
        	return '';
        }
    }
    function msgbox(msg){
    	var WshShell = WScript.CreateObject("WScript.Shell");
    	var BtnCode = WshShell.Popup(msg, 180, "== 小闹钟 ==", 4 + 1 + 64);
    	//WScript.Echo(msg);
    	return BtnCode;
    }
    function help(msg){
    	var WshShell = WScript.CreateObject("WScript.Shell");
    	WshShell.Popup(msg+"-----------
    ++举例,在"+configPath+"中写入:
    11 12 准备吃饭
    表示在11点12分显示“准备吃饭”的闹钟
    支持#开头注释掉一个闹钟
    支持“+m n”的格式表示设置一个闹钟在m小时n分之后;会自动修改闹钟文件,所以下次修改需要重新打开ta.txt
    支持每n分钟出提示:m35 起来休息一会儿吧——每35分钟显示一次“起来休息一会儿吧”", 60, "== 小闹钟 ==", 48);
    }
    while(true){
    	//try{
    		var txt = GetEverything();
    		if(txt){
    			var date = new Date();
    			var h = date.getHours();
    			var m = date.getMinutes();
    			var arr = txt.split("
    ");
    			var msg = '';
    			var wflag = false;
    			var warr = [];
    			for(var i=0;i<arr.length;i++){
    				if(arr[i].substr(0,1)=='#'){
    					warr.push(arr[i]);
    					continue;
    				}
    				if(arr[i].substr(0,1)=='m'){
    					var tmp = arr[i].split(' ');
    					if(tmp.length<2){
    						msg = '重复闹钟'+(i+1)+',配置错误。
    格式:mn s,如:“m35 三十五分钟”,表示每35分钟显示一次:三十五分钟
    ';
    						f = true;
    						continue;
    					}
    					
    					var _m = parseInt(tmp[0].substr(1),10);
    					var ts = getTs();
    					var _s = tmp[1];
    					
    					if(tmp.length<3 arr="" i="" tmp="" 0="" _s="" ts="" wflag="true;" else="" var="" lts="parseInt(tmp[2],10);" if="" ts-lts="" 60="">_m){
    							arr[i] = tmp[0]+" "+_s+" "+ts;
    							wflag = true;
    							var r = msgbox(_s);
    							while(r==4){
    								WScript.Sleep(60000);
    								r = msgbox("重复提醒:
    "+_s);
    							}
    						}
    					}
    					warr.push(arr[i]);
    					continue;
    				}
    				if(arr[i].substr(0,1)=='+'){
    					var tmp = arr[i].split(' ');
    					var _h = parseInt(tmp[0].substr(1),10);
    					var _m = parseInt(tmp[1],10);
    					var __h = h+_h;
    					var __m = m+_m;
    					if(__m>59){
    						__h = __h+Math.floor(__m/60);
    						__m = __m%60;
    					}
    					if(__h>23){
    						__h = __h%24;
    					}
    					arr[i] = __h+" "+__m+(tmp.length>2?(" "+tmp[2]):"");
    					wflag = true;
    				}
    				var tmp = arr[i].split(' ');
    				
    				if(tmp.length>2){
    					var _h = parseInt(tmp[0],10);
    					var _m = parseInt(tmp[1],10);
    					var _t = tmp.length>2?tmp[2]:('闹钟('+(i+1)+')');
    					var f = false;
    					if(isNaN(_h)||_h<0 _h="">24){
    						msg = '闹钟'+(i+1)+',小时错误
    ';
    						f = true;
    					}
    					if(isNaN(_m)||_m<0 _m="">59){
    						msg = '闹钟'+(i+1)+',分错误
    ';
    						f = true;
    					}
    					if(!f && h==_h && m==_m){
    						msg += _t+"
    ";
    					}else if(f){					
    						help(msg);
    						msg = '';
    					}
    					warr.push(arr[i]);
    				}
    			}
    			if(msg){
    				var r = msgbox(msg);
    				while(r==4){
    					WScript.Sleep(60000);
    					r = msgbox("重复提醒:
    "+msg);
    				}
    			}
    			if(wflag){
    				var fso = new ActiveXObject("Scripting.FileSystemObject");
    				f = fso.OpenTextFile(configPath, ForWriting, true);
    				var txt = warr.join("
    ");
    				f.Write(txt);
    				f.Close();
    			}
    	
    		}//else WScript.Echo('无闹钟
    ');
    	/*}catch(e){
    		help("出错了:"+e+";请检查闹钟配置。
    ");
    	}*/
    	WScript.Sleep(60000);
    }pre>
    <p>
    	 
    </p>
    <p>
    	配置文件为c:	a.txt。乱写一行,然后运行,会看到帮助提示
    </p>
    <p>
    	使用方法:wscript 闹钟.js。
    </p>
    <p>
    	 
    </p>
    <p>
    	<br />
    	 
    </p></0></0></3>
  • 相关阅读:
    Spring Boot源码分析-配置文件加载原理
    Spring Boot源码分析-启动过程
    Spring Cloud Alibaba基础教程:Nacos服务发现与配置管理
    JVM(九):垃圾回收算法
    JVM(八):Java 对象模型
    JVM(七):JVM内存结构
    JVM(六):探究类加载过程-下
    JVM(五):探究类加载过程-上
    JVM(四):深入分析Java字节码-下
    JVM(三):深入分析Java字节码-上
  • 原文地址:https://www.cnblogs.com/lein317/p/5067513.html
Copyright © 2020-2023  润新知