感谢大家,走过进来看看,非常着急的一个问题.高分100 把所有的操作都记LOG,这样出问题才好查 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 如果正好是发了一半的话,就怀疑你的在循环控制或者条件判断出有问题。比如rs.next()等等。 if(nSubDay%31==0 && nSubDay!=0 && nSubDay<93)条件是不是有问题?你的条件是既要是31的倍数,又要不等于0,还必须小于93,那么,就只能是31,62,才能够发了。 不过根据你的条件(nSubDay%31==0 && nSubDay!=0 && nSubDay<93),昨天注册的话,都不应该发呀,怎么会发一半的人数呢? to 可乐猫是昨天有1600个用户满31天了,可我却只发632个.少了1000个,这多大差别呀.老板知道非开我不可.to liaomingxue因为天数不一样,我只好按31最多的算了,因为如果同一月发的话,是扣不上费的.如果我发的时间不一样,比如昨天是9:00发的,今天换成 10:00了,会不会有问题,我老迷不过来.总觉的这块有些问题, public long getDays(java.util.Date sd,java.util.Date ed){ return (ed.getTime() - sd.getTime()) / (3600*24*1000);}这个函数和你理解的天数不一样 即使是昨天 也能返回0的 比如你9点运行 我昨天下午注的册 用你这个函数返回的是0不是1当然你的31天也有同样的问题 问题处在这里:1. if(nSubDay%31==0 && nSubDay!=0 && nSubDay<93)2. {3. // 下发过程略4. nCount++;5. System.out.println("发送给第"+nCount+"用户成功");6.}在1处,你能肯定每月是31天吗?2月是28天,而闰年是29天,1、3、5、7、8、10、12是31天,2、4、6、9、11是30天。 改成:if(Math.abs(nSubDay-31)<1 && nSubDay<93)这样,只要你每天只运行一次,就可以保证不会重发,也不会漏掉。并且不会给用户在31,62天时都发。当然如果你愿意每满一个月都要发的话,再加上:Math.abs(nSubDay-62)<1或者(nSubDay%31==0 || nSubDay%31==1)&&nSubDay!=0&&nSubDay<93 public long getDays(java.util.Date sd,java.util.Date ed){ java.util.Calendar calendar1 = java.util.Calendar.getInstance(); java.util.Calendar calendar2 = java.util.Calendar.getInstance(); calendar1.setTime(ed); calendar2.setTime(sd); int year1 = calendar1.get(java.util.Calendar.YEAR); int year2 = calendar2.get(java.util.Calendar.YEAR); int month1 = calendar1.get(java.util.Calendar.MONTH); int month2 = calendar2.get(java.util.Calendar.MONTH); int data1 = calendar1.get(java.util.Calendar.DATE); int data2 = calendar2.get(java.util.Calendar.DATE); return (year1 - year2) * 365 + (month1 - month2) * 31 + (data1 - data2); }用我这个方法吧 wqs_qiu_shi(美丽心情) 楼主呀 你到底是要判断注册时间还是最后聊天时间,如果有个用户每天在9:00以后聊天,根据你的程序他永远也收不到你的信。 大家为我抉择 java编绎时出现如下错误:需要为 class、interface 或 enum怎么办啊? vector问题求教 一个jdbc连接池类,欢迎拍砖! 如果保证向下转型成功,请大师们指点。 关于DataInputStream 的问题?(新手帮帮忙) ★★请举例说明接口的作用、用法。 关于jdbc的getColumns 用过VisualAge for Java的进来 http+ssl=https java URL类不支持。 谁有用java播放rm的component或者相关的api? 如何在Eclipse中导入一个.jar文件。
条件是不是有问题?你的条件是既要是31的倍数,又要不等于0,
还必须小于93,那么,就只能是31,62,才能够发了。
是昨天有1600个用户满31天了,
可我却只发632个.
少了1000个,这多大差别呀.
老板知道非开我不可.to liaomingxue
因为天数不一样,我只好按31最多的算了,因为如果同一月发的话,是扣不上费的.如果我发的时间不一样,比如昨天是9:00发的,今天换成 10:00了,会不会有问题,我老迷不过来.
总觉的这块有些问题,
return (ed.getTime() - sd.getTime()) / (3600*24*1000);
}这个函数和你理解的天数不一样 即使是昨天 也能返回0的 比如你9点运行 我昨天下午注的册 用你这个函数返回的是0不是1
当然你的31天也有同样的问题
1. if(nSubDay%31==0 && nSubDay!=0 && nSubDay<93)
2. {
3. // 下发过程略
4. nCount++;
5. System.out.println("发送给第"+nCount+"用户成功");
6.}在1处,你能肯定每月是31天吗?2月是28天,而闰年是29天,
1、3、5、7、8、10、12是31天,
2、4、6、9、11是30天。
这样,只要你每天只运行一次,就可以保证不会重发,也不会漏掉。
并且不会给用户在31,62天时都发。当然如果你愿意每满一个月都
要发的话,再加上:Math.abs(nSubDay-62)<1
或者(nSubDay%31==0 || nSubDay%31==1)&&nSubDay!=0&&nSubDay<93
java.util.Calendar calendar1 = java.util.Calendar.getInstance();
java.util.Calendar calendar2 = java.util.Calendar.getInstance();
calendar1.setTime(ed);
calendar2.setTime(sd); int year1 = calendar1.get(java.util.Calendar.YEAR);
int year2 = calendar2.get(java.util.Calendar.YEAR);
int month1 = calendar1.get(java.util.Calendar.MONTH);
int month2 = calendar2.get(java.util.Calendar.MONTH);
int data1 = calendar1.get(java.util.Calendar.DATE);
int data2 = calendar2.get(java.util.Calendar.DATE); return (year1 - year2) * 365 + (month1 - month2) * 31 + (data1 - data2);
}
用我这个方法吧
楼主呀 你到底是要判断注册时间还是最后聊天时间,如果有个用户每天在9:00以后聊天,根据你的程序他永远也收不到你的信。