求一思路,高手帮忙看看 if(x<12) ...else ...其中,x代表提取出来的月份。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你的意思是不是 2004-11-26 至 2004-12-252004-12-26 至 2005-01-252005-01-26 至 2005-02-25这样的重复?没明白你想干什么是不是说你需要每个月的第一天是26号这样的用Calendar可以做很多日期相关的事情Calendar rightNow = Calendar.getInstance(); java.util.Date start=new java.util.Date();start.setTime(start.getTime()-start.getHours()*60*60*1000-start.getMinutes()*60*1000-start.getSeconds()*1000-start.getTime()%1000);start.setDate(26);java.util.Date end=new java.util.Date();end.setTime(end.getTime()-end.getHours()*60*60*1000-end.getMinutes()*60*1000-end.getSeconds()*1000-end.getTime()%1000-1);end.setDate(25);java.util.Date curTime=new java.util.Date();if(curTime.before(start)){ if(start.getMonth()==0) { start.setMonth(11); start.setYear(start.getYear()-1); } else { start.setMonth(start.getMonth()-1); }}else{ if(end.getMonth()==11) { end.setMonth(0); end.setYear(end.getYear()+1); } else { end.setMonth(end.getMonth()+1); }}System.out.println(start);System.out.println(end); 没写中文注释,大致补充一下//将起始时间设为本月的26日第一时间java.util.Date start=new java.util.Date();start.setTime(start.getTime()-start.getHours()*60*60*1000-start.getMinutes()*60*1000-start.getSeconds()*1000-start.getTime()%1000);start.setDate(26);//将结束时间设为本月25日最后时间java.util.Date end=new java.util.Date();end.setTime(end.getTime()-end.getHours()*60*60*1000-end.getMinutes()*60*1000-end.getSeconds()*1000-end.getTime()%1000-1);end.setDate(25);//比较当前时间和起始时间,java.util.Date curTime=new java.util.Date();if(curTime.before(start)){//如果当前时间比起始时间早,就把起始时间往前推一个月//以下考虑为一月份往前推至前一年的十二月 if(start.getMonth()==0) { start.setMonth(11); start.setYear(start.getYear()-1); } else { start.setMonth(start.getMonth()-1); }}else{//如果当前时间比起始时间晚,就把结束时间往后推一个月//一年的十二月往后推为次年的一月 if(end.getMonth()==11) { end.setMonth(0); end.setYear(end.getYear()+1); } else { end.setMonth(end.getMonth()+1); }}//现在就可以用了System.out.println(start);System.out.println(end); public static void main(String[] args) { /* //test1 TransformerPool tp=TransformerPool.getInstance(); System.out.println(tp.getCapacity()); */ Date now=new Date(); System.out.println(getStartDateStr(now)); System.out.println(getEndDateStr(now));}public static String getStartDateStr(Date d){ int date=d.getDate(); Date tmp; long l=24*60*60*1000; //一天的毫秒数 if(date<=25){ tmp=new Date(d.getTime()-27*l); //保证能取到上个月,因为一个月最少天数是28,这里取27 tmp.setDate(26); }else{ tmp=new Date(d.getTime()); tmp.setDate(26); } return getDateStr(tmp);} public static String getEndDateStr(Date d){ int date=d.getDate(); Date tmp; long l=24*60*60*1000; //一天的毫秒数 if(date<=25){ tmp=new Date(d.getTime()); tmp.setDate(25); }else{ tmp=new Date(d.getTime()+10*l); //保证取到下个月,所以要取大于(31-26)而小于28的一个数,这里取的10天 tmp.setDate(25); } return getDateStr(tmp); } private static String getDateStr(Date d){ SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); return sdf.format(d); } 一个文本框事件控制按钮启用状态的问题 请教字符串的编码处理 请问,如何学习java的IO包 菜鸟请大家帮忙做个面试题! 如何用java获得客户端的用户名和该用户网卡的MAC号? 数字签名问题 com.borland.dx.dataset.QueryDataSet的问题? 实在是小问题; 数据库分页操作! 报表打印 请问哪里有Jive论坛的教程? 一个图象文件插入到oracle数据库中的问题 ip地址
2004-11-26 至 2004-12-25
2004-12-26 至 2005-01-25
2005-01-26 至 2005-02-25
这样的重复?没明白你想干什么
是不是说你需要每个月的第一天是26号这样的
用Calendar可以做很多日期相关的事情
Calendar rightNow = Calendar.getInstance();
start.setTime(start.getTime()-start.getHours()*60*60*1000-start.getMinutes()*60*1000-start.getSeconds()*1000-start.getTime()%1000);
start.setDate(26);
java.util.Date end=new java.util.Date();
end.setTime(end.getTime()-end.getHours()*60*60*1000-end.getMinutes()*60*1000-end.getSeconds()*1000-end.getTime()%1000-1);
end.setDate(25);java.util.Date curTime=new java.util.Date();
if(curTime.before(start))
{
if(start.getMonth()==0)
{
start.setMonth(11);
start.setYear(start.getYear()-1);
}
else
{
start.setMonth(start.getMonth()-1);
}
}
else
{
if(end.getMonth()==11)
{
end.setMonth(0);
end.setYear(end.getYear()+1);
}
else
{
end.setMonth(end.getMonth()+1);
}
}System.out.println(start);
System.out.println(end);
java.util.Date start=new java.util.Date();
start.setTime(start.getTime()-start.getHours()*60*60*1000-start.getMinutes()*60*1000-start.getSeconds()*1000-start.getTime()%1000);
start.setDate(26);
//将结束时间设为本月25日最后时间
java.util.Date end=new java.util.Date();
end.setTime(end.getTime()-end.getHours()*60*60*1000-end.getMinutes()*60*1000-end.getSeconds()*1000-end.getTime()%1000-1);
end.setDate(25);//比较当前时间和起始时间,
java.util.Date curTime=new java.util.Date();
if(curTime.before(start))
{
//如果当前时间比起始时间早,就把起始时间往前推一个月
//以下考虑为一月份往前推至前一年的十二月
if(start.getMonth()==0)
{
start.setMonth(11);
start.setYear(start.getYear()-1);
}
else
{
start.setMonth(start.getMonth()-1);
}
}
else
{
//如果当前时间比起始时间晚,就把结束时间往后推一个月
//一年的十二月往后推为次年的一月
if(end.getMonth()==11)
{
end.setMonth(0);
end.setYear(end.getYear()+1);
}
else
{
end.setMonth(end.getMonth()+1);
}
}
//现在就可以用了
System.out.println(start);
System.out.println(end);
/* //test1
TransformerPool tp=TransformerPool.getInstance();
System.out.println(tp.getCapacity());
*/
Date now=new Date();
System.out.println(getStartDateStr(now));
System.out.println(getEndDateStr(now));
}
public static String getStartDateStr(Date d){
int date=d.getDate();
Date tmp;
long l=24*60*60*1000; //一天的毫秒数
if(date<=25){
tmp=new Date(d.getTime()-27*l);
//保证能取到上个月,因为一个月最少天数是28,这里取27
tmp.setDate(26);
}else{
tmp=new Date(d.getTime());
tmp.setDate(26);
}
return getDateStr(tmp);
}
public static String getEndDateStr(Date d){
int date=d.getDate();
Date tmp;
long l=24*60*60*1000; //一天的毫秒数
if(date<=25){
tmp=new Date(d.getTime());
tmp.setDate(25);
}else{
tmp=new Date(d.getTime()+10*l);
//保证取到下个月,所以要取大于(31-26)而小于28的一个数,这里取的10天
tmp.setDate(25);
}
return getDateStr(tmp);
}
private static String getDateStr(Date d){
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
return sdf.format(d);
}