问题描述
是这样的一个问题我要写一个方法publicvoidgettick(intdaya,intdayb){}daya,dayb都是int型的。比如20090420现在是传进去两个日期,int型的。股票是星期六和星期天的都不交易的我要判断它们之间有多少日期是交易日期请高手写个方法,谢谢了。
解决方案
解决方案二:
可用Data或Calendar类的getTime()方法,得到两时间隔,再判断该间隔内有几个星期。
解决方案三:
up
解决方案四:
这个难度有点大,还有公共假日呢。只能一天一天的数。
解决方案五:
这个实现起来还是挺复杂的
解决方案六:
如果要算公休假的话,恐怕需要提供公休假的集合,并且这个也是随着国家政策变化的。。。如果单纯的是双休日的话,是可以的,先看中间间隔了多少个完整的星期,再把剩下的不足七天的循环判断一下就可以了,代码写了一下,不知道有没有疏漏,但思路基本就是这样的publicstaticintgetNum(intbegin,intend)throwsParseException{SimpleDateFormatsdf=newSimpleDateFormat("yyyyMMdd");Dateb=sdf.parse(String.valueOf(begin));Datee=sdf.parse(String.valueOf(end));intn=(int)(((e.getTime()-b.getTime())/(24*60*60*1000))+1);//相差天数intweek=n/7;//跨越的完整周期intday=n%7;//不足的日期Calendarc=Calendar.getInstance();//开始日期c.setTime(b);//处理除去完整的周期后剩下的日期intlastDay=(c.get(Calendar.DAY_OF_WEEK)==Calendar.SATURDAY||c.get(Calendar.DAY_OF_WEEK)==Calendar.SUNDAY?1:0);for(inti=1;i<day;i++){c.add(Calendar.DAY_OF_MONTH,1);if(c.get(Calendar.DAY_OF_WEEK)==Calendar.SATURDAY||c.get(Calendar.DAY_OF_WEEK)==Calendar.SUNDAY)lastDay++;}returnlastDay+week*2;}
解决方案七:
参考一下这个diffDayCount方法里面加上周末的判断就可以了。
解决方案八:
学习
解决方案九:
学习
解决方案十:
ding
解决方案十一:
up!!!
解决方案十二:
它们之间有多少日期是交易日期?我和5楼有些不同:publicintgetNum(intbegin,intend)throwsParseException{SimpleDateFormatsdf=newSimpleDateFormat("yyyyMMdd");Dateb=sdf.parse(String.valueOf(begin));Datee=sdf.parse(String.valueOf(end));intn=(int)(((e.getTime()-b.getTime())/(24*60*60*1000))+1);//相差天数intweek=n/7;//跨越的完整周期intday=n%7;//不足的日期intchangeTime;if(day<=5){changeTime=week*5+day;}else(day>5&&day<8){changeTime=(week+1)*5;}returnchangeTime;}
解决方案十三:
这个确实要考虑很多
解决方案十四:
交易日数取得(考虑到开始日是周六,结束日是周日的情况):publicstaticintgetTradingDays(intdate1,intdate2){StringstrDate1=String.valueOf(date1);StringstrDate2=String.valueOf(date2);SimpleDateFormatsdf=newSimpleDateFormat("yyyyMMdd");CalendarcldDate1=Calendar.getInstance();CalendarcldDate2=Calendar.getInstance();try{cldDate1.setTime(sdf.parse(strDate1));cldDate2.setTime(sdf.parse(strDate2));}catch(ParseExceptionpe){pe.printStackTrace();}intweekDayNo1=cldDate1.get(Calendar.DAY_OF_WEEK);intweekDayNo2=cldDate2.get(Calendar.DAY_OF_WEEK);weekDayNo1=weekDayNo1==Calendar.SUNDAY?7:weekDayNo1-1;weekDayNo2=weekDayNo2==Calendar.SUNDAY?7:weekDayNo2-1;intbeginWeekDays=weekDayNo1>5?0:5-weekDayNo1+1;intendWeekDays=weekDayNo2>5?5:weekDayNo2;cldDate1.add(Calendar.DATE,7-weekDayNo1+1);cldDate2.add(Calendar.DATE,-1*weekDayNo2);longdays=(cldDate2.getTimeInMillis()-cldDate1.getTimeInMillis())/(24*60*60*1000)+1;days=days-(days/7)*2+beginWeekDays+endWeekDays;return(int)days;}
解决方案十五:
kandaogeweigaorendetiezi,wokuiduifumuwoyaoxuexi