📄 suntools.java
字号:
"LodgName", "LodgNumber", "EngaName", "EngaNumber", "ChouName",
"ChouNumber", "[HABITUS]", "Ck_Habitus", "Ck_Minute", "[PARTTIME]",
"In_Room", "Out_Room1", "Out_Room2", "InsuDay", "ClockRoom1",
"ClockRoom2", "InsuHour1", "InsuHour2", "[JDBC]", "DBFname",
"UserID", "Password", "IP", "Access", "[ODBC]", "LinkName" };
String bt;
if(type == Number_RZ) {
bt = sunini.getIniKey ("LodgName");
sunini.setIniKey ("LodgNumber", num.substring (bt.length () + 8));
}
else if(type == Number_YD){
bt = sunini.getIniKey ("EngaName");
sunini.setIniKey ("EngaNumber", num.substring (bt.length () + 8));
} else{
bt = sunini.getIniKey ("ChouName");
sunini.setIniKey ("ChouNumber", num.substring (bt.length () + 8));
}
//保存到INI文件
sunini.saveIni (ini);
}
/**=======================================================================**
* [## public static double getConsumeFactor(String sDate, String eDate) {} ]:
* 参数 :String sDate对象表示开始时间
* String eDate变量表示结束时间
* 返回值 :double
* 修饰符 :public static 可以不实例化对象而直接调用方法
* 功能 :计算酒店计费天数 按INI文件中设置的
**=======================================================================**
*/
//获得消费系数
public static double getConsumeFactor(String sDate, String eDate) {
//获得开始日期时间的--年--月--日--时--分--秒
String syh [] = sDate.trim ().split(" ");
String symd[] = syh[0].trim().split("-");
String shms[] = syh[1].trim().split(":");
int sy = Integer.parseInt(symd[0]);
int sM = Integer.parseInt(symd[1]);
int sd = Integer.parseInt(symd[2]);
int sh = Integer.parseInt(shms[0]);
int sm = Integer.parseInt(shms[1]);
int ss = Integer.parseInt(shms[2]);
//获得结束日期时间的--年--月--日--时--分--秒
String eyh [] = eDate.trim ().split(" ");
String eymd[] = eyh[0].trim().split("-");
String ehms[] = eyh[1].trim().split(":");
int ey = Integer.parseInt(eymd[0]);
int eM = Integer.parseInt(eymd[1]);
int ed = Integer.parseInt(eymd[2]);
int eh = Integer.parseInt(ehms[0]);
int em = Integer.parseInt(ehms[1]);
int es = Integer.parseInt(ehms[2]);
//获得sDate的long值
long sdt = new Timestamp(sy, sM, sd, sh, sm, ss, 0).getTime();
//获得eDate的long值
long edt = new Timestamp(ey, eM, ed, eh, em, es, 0).getTime();
double db = 0;
if(sdt > edt) { //不合法 开始日期一定要小于结束日期
db = -1;
return db;
}//Endif
if(sdt == edt) { //无时间差
db = 0;
return db;
}//Endif
int insuDay = (int)(edt - sdt)/3600000;
if(insuDay < 24) { //入住不到一天
if(Integer.parseInt(sunini.getIniKey("InsuDay")) == 1)
db = 1; //按全天计费
else {
if(insuDay > 1 && insuDay < 12)
db = 0.5; //如果不按全天计费,则大于1小时按半天计费
else
db = 1; //如果不按全天计费,则大于12小时按全天计费
}//Endif
return db;
}//Endif
//几点之后按新的一天计费
int inRoom = Integer.parseInt(sunini.getIniKey("In_Room"));
if(sh < inRoom) {
db = 0.5;
}//Endif
sh = inRoom; //多的时间已经加了系数,去掉多余的
//几点之后按半天计费
int outRoom1 = Integer.parseInt(sunini.getIniKey("Out_Room1"));
int outRoom2 = Integer.parseInt(sunini.getIniKey("Out_Room2"));
if(eh > outRoom1 && eh < outRoom2) {
db = db + 0.5;
eh = outRoom1; //多的时间已经加了系数,去掉多余的
}else if(eh >= outRoom2) {
db = db + 1;
eh = outRoom2;
}//Endif
//计算入住时间
sdt = new Timestamp(sy, sM, sd, sh, sm, ss, 0).getTime();
edt = new Timestamp(ey, eM, ed, eh, em, es, 0).getTime();
db = db + (edt - sdt)/86400000;
return db;
}
/**=======================================================================**
* [## public static double getClockFactor(String sDate, String eDate) {} ]:
* 参数 :String sDate对象表示开始时间
* String eDate变量表示结束时间
* 返回值 :double
* 修饰符 :public static 可以不实例化对象而直接调用方法
* 功能 :计算酒店钟点房计费系数 按INI文件中设置的
**=======================================================================**
*/
public static double getClockFactor(String sDate, String eDate) {
//获得开始日期时间的--年--月--日--时--分--秒
String syh [] = sDate.trim ().split(" ");
String symd[] = syh[0].trim().split("-");
String shms[] = syh[1].trim().split(":");
int sy = Integer.parseInt(symd[0]);
int sM = Integer.parseInt(symd[1]);
int sd = Integer.parseInt(symd[2]);
int sh = Integer.parseInt(shms[0]);
int sm = Integer.parseInt(shms[1]);
int ss = Integer.parseInt(shms[2]);
//获得结束日期时间的--年--月--日--时--分--秒
String eyh [] = eDate.trim ().split(" ");
String eymd[] = eyh[0].trim().split("-");
String ehms[] = eyh[1].trim().split(":");
int ey = Integer.parseInt(eymd[0]);
int eM = Integer.parseInt(eymd[1]);
int ed = Integer.parseInt(eymd[2]);
int eh = Integer.parseInt(ehms[0]);
int em = Integer.parseInt(ehms[1]);
int es = Integer.parseInt(ehms[2]);
//获得sDate的long值
long sdt = new Timestamp(sy, sM, sd, sh, sm, ss, 0).getTime();
//获得eDate的long值
long edt = new Timestamp(ey, eM, ed, eh, em, es, 0).getTime();
//获得时间差
double db = 0;
if(sdt > edt) { //不合法 开始日期一定要小于结束日期
db = -1;
return db;
}//Endif
//获得两个时间之间有多少秒
edt = (edt - sdt) / 1000;
//--------------------------------------------------------------------//
if(edt <= 60 * Integer.parseInt(sunini.getIniKey("ClockRoom1"))) {
db = 0; //开房后几分钟开始计费,读INI文件设置
return db;
}//Endif
//--------------------------------------------------------------------//
if(edt / 60 < 60 * Integer.parseInt(sunini.getIniKey("ClockRoom2"))) {
db = 1; //不足几小时按一个单位计费
return db;
}//Endif
//--------------------------------------------------------------------//
//除以上可能的正常计费公式如下
db = edt / 3600; //获得过去的小时数
edt = edt % 3600 / 60; //获得多余的分钟数
if(edt > Integer.parseInt(sunini.getIniKey("InsuHour2")) && edt <= Integer.parseInt(sunini.getIniKey("InsuHour1"))) {
db = db + 0.5; //超过多少分,但小于多少分部分,收半价
}else if(edt > Integer.parseInt(sunini.getIniKey("InsuHour2"))) {
db = db + 1; //超过多少分的,收全价
}//Endif
//--------------------------------------------------------------------//
return db;
}
/**=======================================================================**
* [## public static String getConsumeHour(String sDate, String eDate) {} ]:
* 参数 :String sDate对象表示开始时间
* String eDate变量表示结束时间
* 返回值 :String
* 修饰符 :public static 可以不实例化对象而直接调用方法
* 功能 :计算两个时间之间有几小时几分
**=======================================================================**
*/
public static String getConsumeHour(String sDate, String eDate) {
//获得开始日期时间的--年--月--日--时--分--秒
String syh [] = sDate.trim ().split(" ");
String symd[] = syh[0].trim().split("-");
String shms[] = syh[1].trim().split(":");
int sy = Integer.parseInt(symd[0]);
int sM = Integer.parseInt(symd[1]);
int sd = Integer.parseInt(symd[2]);
int sh = Integer.parseInt(shms[0]);
int sm = Integer.parseInt(shms[1]);
int ss = Integer.parseInt(shms[2]);
//获得结束日期时间的--年--月--日--时--分--秒
String eyh [] = eDate.trim ().split(" ");
String eymd[] = eyh[0].trim().split("-");
String ehms[] = eyh[1].trim().split(":");
int ey = Integer.parseInt(eymd[0]);
int eM = Integer.parseInt(eymd[1]);
int ed = Integer.parseInt(eymd[2]);
int eh = Integer.parseInt(ehms[0]);
int em = Integer.parseInt(ehms[1]);
int es = Integer.parseInt(ehms[2]);
//获得sDate的long值
long sdt = new Timestamp(sy, sM, sd, sh, sm, ss, 0).getTime();
//获得eDate的long值
long edt = new Timestamp(ey, eM, ed, eh, em, es, 0).getTime();
//获得时间差
sdt = edt - sdt;
//生成过去多少时间的字符串
String t = sdt / 3600000 + "小时" + sdt % 3600000 / 60000 + "分";
return t;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -