日期问题:String="200602",求增加月份,得到结果 String 类型 200603这样的结果 日期问题:String="200602",求增加月份,得到结果 String 类型 200603这样的结果用过Calendar 搞来搞去都没搞出结果,有人知道如何得到这样的结果吗,我需要的类功能是随意增加月份。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 给你个非常规方法:public String getNextMonth(String str){ String monthstr=str.substring(5,6); int i_mon=Integer.parseInt(monthstr); i_mon++; if(i_mon>12) return str.substring(0,4)+"01"; if(i_mon<10) return str.substring(0,4)+"0"+String.valueOf(i_mon); else return str.substring(0,4)+ String.valueOf(i_mon);} 楼上的狠,万一哪天历法变了,一年有13个月呢?String s="200602";DateFormat df=new SimpleDateFormat("yyyyMM");Calendar cal=Calendar.getInstance();cal.setTime(df.parse(s));cal.add(Calendar.MONEH,1);//月份加1System.out.println(df.format(cal.getTime()); 在二楼基础上改进了一下,:)import java.text.DateFormat;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Calendar;public class CSDN1 { public static void main(String[] args) { String s = "200602"; DateFormat df = new SimpleDateFormat("yyyyMM"); Calendar cal = Calendar.getInstance(); try { cal.setTime(df.parse(s)); } catch (ParseException e) { e.printStackTrace(); } cal.add(Calendar.MONTH, 1);// 月份加1 System.out.println(df.format(cal.getTime())); }} String oldDate = "200601";String pattern = "yyyyMM";Date formatDate = null;SimpleDateFormat formatter = new SimpleDateFormat(pattern); try { formatDate = formatter.parse(oldDate); } catch (Exception e) { throw new RuntimeException(e.getMessage()); }Calendar cal = new GregorianCalendar();cal.setTime(formatDate);cal.add(Calendar.MONTH, 5);Date newDate = cal.getTime(); public static void main(String[] args){ System.out.println(getDate("200602",34)); } public static String getDate(String strDate , int intMonth){ int month = Integer.parseInt(strDate.substring(4,6)); int year = Integer.parseInt(strDate.substring(0,4)); month += intMonth; for(;month>12;){ month -= 12; year++; } return String.valueOf(year)+String.valueOf(getMM(month)); } public static String getMM(int intMM){ String strMM = ""; strMM = String.valueOf(intMM); if(strMM.length()==1){ strMM = "0" + strMM; } return strMM; } 谢谢各位,我是楼主,这是我参照网上代码改的代码 不过格式限定得很死,请各位补充下更完善。/*增加月份公用类*/ private static Date add(Date date, int amount, int field) { Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.add(field, amount); return calendar.getTime(); } //传入参数格式必须为2006-04-03,否则出错 //输出格式为2006-05-03 public static String addMonthsLong(String s,int months) { java.text.SimpleDateFormat df=new java.text.SimpleDateFormat("yyyy-MM-dd"); Date myTime=null; try{ myTime = df.parse(s); }catch(Exception e){ } Date nextMonth = add(myTime, months, Calendar.MONTH); String mytime = df.format(nextMonth); return mytime; } //传入参数格式必须为200604,否则出错 //输出格式为200605 public static String addMonthsShort(String s,int months) { java.text.SimpleDateFormat df=new java.text.SimpleDateFormat("yyyyMM"); Date myTime=null; try{ myTime = df.parse(s); }catch(Exception e){ } Date nextMonth = add(myTime, months, Calendar.MONTH); String mytime = df.format(nextMonth); return mytime; } /*增加月份公用类*/ 多线程并发求教 spring hibernate 开发 org.hibernate.exception.JDBCConnectionException: 为什么字符串会出错??真是欺负人。。。 [请教]关于static变量的使用场合的问题 数据库 和 集合类 请问怎样给一个数组的每一个元素一次性地赋同样的值 JBuilder、java的初级问题 我可不可以跳过本章,先学后面的知识?? 百思不得其解 如何把日期型转为整型? 不看不知道,一看吓一跳.大侠们看看这是What? java动态编译时的中文显示问题
{
String monthstr=str.substring(5,6);
int i_mon=Integer.parseInt(monthstr);
i_mon++;
if(i_mon>12) return str.substring(0,4)+"01";
if(i_mon<10) return str.substring(0,4)+"0"+String.valueOf(i_mon);
else return str.substring(0,4)+ String.valueOf(i_mon);
}
String s="200602";
DateFormat df=new SimpleDateFormat("yyyyMM");
Calendar cal=Calendar.getInstance();
cal.setTime(df.parse(s));
cal.add(Calendar.MONEH,1);//月份加1
System.out.println(df.format(cal.getTime());
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;public class CSDN1 {
public static void main(String[] args) {
String s = "200602";
DateFormat df = new SimpleDateFormat("yyyyMM");
Calendar cal = Calendar.getInstance();
try {
cal.setTime(df.parse(s));
} catch (ParseException e) {
e.printStackTrace();
}
cal.add(Calendar.MONTH, 1);// 月份加1
System.out.println(df.format(cal.getTime()));
}
}
String pattern = "yyyyMM";
Date formatDate = null;
SimpleDateFormat formatter = new SimpleDateFormat(pattern);
try {
formatDate = formatter.parse(oldDate);
}
catch (Exception e) {
throw new RuntimeException(e.getMessage());
}
Calendar cal = new GregorianCalendar();
cal.setTime(formatDate);
cal.add(Calendar.MONTH, 5);
Date newDate = cal.getTime();
System.out.println(getDate("200602",34));
}
public static String getDate(String strDate , int intMonth){ int month = Integer.parseInt(strDate.substring(4,6));
int year = Integer.parseInt(strDate.substring(0,4));
month += intMonth;
for(;month>12;){
month -= 12;
year++;
}
return String.valueOf(year)+String.valueOf(getMM(month));
}
public static String getMM(int intMM){
String strMM = "";
strMM = String.valueOf(intMM);
if(strMM.length()==1){
strMM = "0" + strMM;
}
return strMM;
}
/*增加月份公用类*/
private static Date add(Date date, int amount, int field) {
Calendar calendar = Calendar.getInstance(); calendar.setTime(date);
calendar.add(field, amount); return calendar.getTime();
}
//传入参数格式必须为2006-04-03,否则出错
//输出格式为2006-05-03
public static String addMonthsLong(String s,int months) {
java.text.SimpleDateFormat df=new java.text.SimpleDateFormat("yyyy-MM-dd");
Date myTime=null;
try{
myTime = df.parse(s);
}catch(Exception e){
}
Date nextMonth = add(myTime, months, Calendar.MONTH);
String mytime = df.format(nextMonth);
return mytime; }
//传入参数格式必须为200604,否则出错
//输出格式为200605
public static String addMonthsShort(String s,int months) {
java.text.SimpleDateFormat df=new java.text.SimpleDateFormat("yyyyMM");
Date myTime=null;
try{
myTime = df.parse(s);
}catch(Exception e){
}
Date nextMonth = add(myTime, months, Calendar.MONTH);
String mytime = df.format(nextMonth);
return mytime; }
/*增加月份公用类*/