日期上减一个月 我想截取日期,得到年月,并在当前月上减一个月,可是试了几种方法都不成功,请大侠出手相助!最终要得到的格式yyyy-MM代码:String sysStartDate = startDate.toString().substring(0,7); 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 package user.self.util;import java.util.Calendar;import java.util.Date;import java.text.*;public class DateTime { public DateTime() { } /** * 取得系统当前时间 * @return String yyyy-mm-dd */ public String getCurrentDate() { Calendar rightNow = Calendar.getInstance(); int year = rightNow.get(rightNow.YEAR); int month = rightNow.get(rightNow.MONTH) + 1; int day = rightNow.get(rightNow.DATE); return year + "-" + month + "-" + day; } /** * 取得系统当前时间 * @return String yyyy年mm月dd日 */ public String getCurrentDate1() { Calendar rightNow = Calendar.getInstance(); int year = rightNow.get(rightNow.YEAR); int month = rightNow.get(rightNow.MONTH) + 1; int day = rightNow.get(rightNow.DATE); return year + "年" + month + "月" + day + "日"; } /** * 取得系统当前时间 * @return String yyyymmdd */ public String getCurrentDate2() { Calendar rightNow = Calendar.getInstance(); int year = rightNow.get(rightNow.YEAR); int month = rightNow.get(rightNow.MONTH) + 1; int day = rightNow.get(rightNow.DATE); return year + "" + month + "" + day; } /** * 取得系统当前时间 * @return String yyyy-mm */ public String getCurrentDate3() { Calendar rightNow = Calendar.getInstance(); int year = rightNow.get(rightNow.YEAR); int month = rightNow.get(rightNow.MONTH) + 1; //int day = rightNow.get(rightNow.DATE); return year + "-" + month; } /** * 取得系统当前时间 * @return String yyyyMMddhhmmss */ public String getCurrentDate4() { Calendar c = Calendar.getInstance(); c.add(c.SECOND, 0); return "" + c.get(c.YEAR) + "" + (c.get(c.MONTH) + 1) + "" + c.get(c.DATE)+""+c.get(c.HOUR_OF_DAY)+""+c.get(c.MINUTE)+""+c.get(c.SECOND);} /** * 取得系统当前时间 * @return String yyyy-MM-dd hh:mm:ss *//* public String getCurrentDate5() { SimpleDateFormat simpleDateFormat =new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); java.util.Date date = new java.util.Date(); String time = simpleDateFormat.format(date); return time; }*//*** 取得系统当前时间* @return String yyyy-MM-dd hh:mm:ss*/ public String getCurrentDate5(){ Calendar c = Calendar.getInstance(); c.add(c.SECOND, 0); return "" + c.get(c.YEAR) + "-" + (c.get(c.MONTH) + 1) + "-" + c.get(c.DATE)+" "+c.get(c.HOUR_OF_DAY)+":"+c.get(c.MINUTE)+":"+c.get(c.SECOND); } /** * 取得系统当前时间 常用于订单号 * @return String yyyyMMddhhmmss */ public String getCurrentDate6() { Calendar c = Calendar.getInstance(); c.add(c.SECOND, 0); String year=c.get(c.YEAR)+""; return "" + year.subSequence(2,year.length())+ "" + (c.get(c.MONTH) + 1) + "" + c.get(c.DATE)+"-"+c.get(c.HOUR_OF_DAY)+""+c.get(c.MINUTE)+""+c.get(c.SECOND)+"-"+c.get(c.MILLISECOND); } /** * 取得系统当前时间前n个月的相对应的一天 * @param n int * @return String yyyy-mm-dd */ public String getNMonthBeforeCurrentDay(int n) { Calendar c = Calendar.getInstance(); c.add(c.MONTH, -n); return "" + c.get(c.YEAR) + "-" + (c.get(c.MONTH) + 1) + "-" + c.get(c.DATE); } /** * 取得系统当前时间后n个月的相对应的一天 * @param n int * @return String yyyy-mm-dd */ public String getNMonthAfterCurrentDay(int n) { Calendar c = Calendar.getInstance(); c.add(c.MONTH, n); return "" + c.get(c.YEAR) + "-" + (c.get(c.MONTH) + 1) + "-" + c.get(c.DATE); } /** * 取得系统当前时间前n天 * @param n int * @return String yyyy-mm-dd */ public String getNDayBeforeCurrentDate(int n) { Calendar c = Calendar.getInstance(); c.add(c.DAY_OF_MONTH, -n); return "" + c.get(c.YEAR) + "-" + (c.get(c.MONTH) + 1) + "-" + c.get(c.DATE); } /** * 取得系统当前时间后n天 * @param n int * @return String yyyy-mm-dd */ public String getNDayAfterCurrentDate(int n) { Calendar c = Calendar.getInstance(); c.add(c.DAY_OF_MONTH, n); return "" + c.get(c.YEAR) + "-" + (c.get(c.MONTH) + 1) + "-" + c.get(c.DATE); } //--------------------------------------------------------------------- //取过去一个时间对应的系统当年的一天 public String getCurrentDateAfterPastDate(String sPastDate) { if (sPastDate != null && !sPastDate.equals("")) { Date date = switchStringToDate(sPastDate); Calendar c = Calendar.getInstance(); c.setTime(date); int iPastYear = c.get(c.YEAR); Calendar c1 = Calendar.getInstance(); int iCurrentYear = c1.get(c1.YEAR); c.add(c.YEAR, iCurrentYear - iPastYear); return "" + c.get(c.YEAR) + "-" + (c.get(c.MONTH) + 1) + "-" + c.get(c.DATE); } else { return null; } } /** * 将一个日期字符串转化成日期 * @param sDate String * @return Date yyyy-mm-dd */ public Date switchStringToDate(String sDate) { Date date = null; try { SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); date = df.parse(sDate); } catch (Exception e) { System.out.println("日期转换失败:" + e.getMessage()); } return date; } /** * 输入两个字符串型的日期,比较两者的大小 * @param fromDate String * @param toDate String * @return boolean before为true */ public boolean compareTwoDateBigOrSmall(String fromDate, String toDate) { Date dateFrom = this.switchStringToDate(fromDate); Date dateTo = this.switchStringToDate(toDate); if (dateFrom.before(dateTo)) { return true; } else { return false; } } /** * 将一个日期字符串转化成Calendar * @param sDate String * @return Calendar */ public Calendar switchStringToCalendar(String sDate) { Date date = switchStringToDate(sDate); Calendar c = Calendar.getInstance(); c.setTime(date); return c; } /** * 将一个日期转化成Calendar * @param date Date * @return Calendar */ public Calendar switchStringToCalendar(Date date) { Calendar c = Calendar.getInstance(); c.setTime(date); return c; } public String string2Date(String dateString) throws java.lang.Exception { /*DateFormat dateFormat; dateFormat = new SimpleDateFormat("yyyy-MM-dd kk:mm:ss"); dateFormat.setLenient(false); java.util.Date timeDate = dateFormat.parse(dateString);//util类型 //java.sql.Date dateTime = new java.sql.Date(timeDate.getTime());//sql类型 java.sql.Timestamp dateTime = new java.sql.Timestamp(timeDate.getTime());//Timestamp类型 */ SimpleDateFormat newk = new SimpleDateFormat ("yyyy.MM.dd hh:mm:ss"); SimpleDateFormat old = new SimpleDateFormat("MMM dd hh:mm:ss yyyy"); String strDate = "Mar 22 00:42:00 2002"; Date d = old.parse(strDate); System.out.println(newk.format(d)); return newk.format(d); } /** * 取得某个时间前n个月的相对应的一天 * @param sDate String * @param n int * @return String yyyy-mm-dd */ public String getNMonthBeforeOneDay(String sDate, int n) { Calendar c = switchStringToCalendar(sDate); c.add(c.MONTH, -n); return "" + c.get(c.YEAR) + "-" + (c.get(c.MONTH) + 1) + "-" + c.get(c.DATE); } //取得某个时间后n个月的相对应的一天 public String getNMonthAfterOneDay(String sDate, int n) { Calendar c = switchStringToCalendar(sDate); c.add(c.MONTH, n); return "" + c.get(c.YEAR) + "-" + (c.get(c.MONTH) + 1) + "-" + c.get(c.DATE); } //取得某个时间前n天,格式为yyyy-mm-dd public String getNDayBeforeOneDate(String sDate, int n) { Calendar c = switchStringToCalendar(sDate); c.add(c.DAY_OF_MONTH, -n); return "" + c.get(c.YEAR) + "-" + (c.get(c.MONTH) + 1) + "-" + c.get(c.DATE); } //取得某个时间后n天,格式为yyyy-mm-dd public String getNDayAfterOneDate(String sDate, int n) { Calendar c = switchStringToCalendar(sDate); c.add(c.DAY_OF_MONTH, n); return "" + c.get(c.YEAR) + "-" + (c.get(c.MONTH) + 1) + "-" + c.get(c.DATE); } //判断系统当前时间是不是润年 public boolean isRunNian() { java.util.Calendar rightNow = java.util.Calendar.getInstance(); int year = rightNow.get(rightNow.YEAR); if (0 == year % 4 && (year % 100 != 0 || year % 400 == 0)) { return true; } else { return false; } } public Date StringToDate(String s){ SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); java.util.Date date=null; Date dateTime=null; if(!s.equals("")){ try { date=sdf.parse(s); dateTime =new Date(date.getTime()); } catch (ParseException e) { e.printStackTrace(); } } return dateTime; } } import java.util.*;import java.text.*;class test { public static void main(String[] args) { Calendar c = Calendar.getInstance();// 获得一个日历的实例 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM"); Date date = null; try { date = sdf.parse("2010-01");// 初始日期 } catch (Exception e) { } c.setTime(date);// 设置日历时间 c.add(Calendar.MONTH, -1); System.out.println("得到你想要得前1个月的日期 ===" + sdf.format(c.getTime())); }} Calender有方法可以搞定的。 那俩L的同学太恐怖了。。LZ好好研究下java.util.Calendar就可以了另外 如果你这个数据是从库里取出来的话 可以放到库里计算的 你用的是啥库?。。 如果使用oracle的话 add_months()就可以轻松搞定也可以使用java.util.Calendar 刚才电脑死机了,我想在jsp页面取系统时间,只要年月,在月上减一个月。最后得到的格式年月yyyy-MM WebNoteEditor V2 Beta 在线编辑器 For Jsp版本 关于jdk环境变量的问题 有没有可以可以选择时间和日期的js控件? 高手请进 J2EE里面代码的查看!! UTF-8怎么转换成GB2312啊? 中文2000server和中文xp是不是同一种编码?? JSP表单提交数据到MySQL 写了一个jsp程序,运行之后中文显示的是乱码.这是怎么回事??给出代码和运行情况如下: struts2下载文件怎么使用绝对路径 怎样使用PreparedStatement在执行添加语句后,获得生成的主键值 新手问题在eclipse中启动了tomcat本地服务器后无法用浏览执行jsp文件
package user.self.util;import java.util.Calendar;
import java.util.Date;
import java.text.*;public class DateTime {
public DateTime() {
} /**
* 取得系统当前时间
* @return String yyyy-mm-dd
*/
public String getCurrentDate() {
Calendar rightNow = Calendar.getInstance();
int year = rightNow.get(rightNow.YEAR);
int month = rightNow.get(rightNow.MONTH) + 1;
int day = rightNow.get(rightNow.DATE);
return year + "-" + month + "-" + day;
} /**
* 取得系统当前时间
* @return String yyyy年mm月dd日
*/
public String getCurrentDate1() {
Calendar rightNow = Calendar.getInstance();
int year = rightNow.get(rightNow.YEAR);
int month = rightNow.get(rightNow.MONTH) + 1;
int day = rightNow.get(rightNow.DATE);
return year + "年" + month + "月" + day + "日";
} /**
* 取得系统当前时间
* @return String yyyymmdd
*/
public String getCurrentDate2() {
Calendar rightNow = Calendar.getInstance();
int year = rightNow.get(rightNow.YEAR);
int month = rightNow.get(rightNow.MONTH) + 1;
int day = rightNow.get(rightNow.DATE);
return year + "" + month + "" + day;
} /**
* 取得系统当前时间
* @return String yyyy-mm
*/
public String getCurrentDate3() {
Calendar rightNow = Calendar.getInstance();
int year = rightNow.get(rightNow.YEAR);
int month = rightNow.get(rightNow.MONTH) + 1;
//int day = rightNow.get(rightNow.DATE);
return year + "-" + month;
} /**
* 取得系统当前时间
* @return String yyyyMMddhhmmss
*/
public String getCurrentDate4() {
Calendar c = Calendar.getInstance();
c.add(c.SECOND, 0); return "" + c.get(c.YEAR) + "" + (c.get(c.MONTH) + 1) + "" + c.get(c.DATE)+""+c.get(c.HOUR_OF_DAY)+""+c.get(c.MINUTE)+""+c.get(c.SECOND);} /**
* 取得系统当前时间
* @return String yyyy-MM-dd hh:mm:ss
*/
/* public String getCurrentDate5() {
SimpleDateFormat simpleDateFormat =new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
java.util.Date date = new java.util.Date();
String time = simpleDateFormat.format(date);
return time;
}
*/
/**
* 取得系统当前时间
* @return String yyyy-MM-dd hh:mm:ss
*/ public String getCurrentDate5(){
Calendar c = Calendar.getInstance();
c.add(c.SECOND, 0);
return "" + c.get(c.YEAR) + "-" + (c.get(c.MONTH) + 1) + "-" + c.get(c.DATE)+" "+c.get(c.HOUR_OF_DAY)+":"+c.get(c.MINUTE)+":"+c.get(c.SECOND);
} /**
* 取得系统当前时间 常用于订单号
* @return String yyyyMMddhhmmss
*/
public String getCurrentDate6() {
Calendar c = Calendar.getInstance();
c.add(c.SECOND, 0);
String year=c.get(c.YEAR)+"";
return "" + year.subSequence(2,year.length())+ "" + (c.get(c.MONTH) + 1) + "" + c.get(c.DATE)+"-"+c.get(c.HOUR_OF_DAY)+""+c.get(c.MINUTE)+""+c.get(c.SECOND)+"-"+c.get(c.MILLISECOND); }
/**
* 取得系统当前时间前n个月的相对应的一天 * @param n int
* @return String yyyy-mm-dd
*/
public String getNMonthBeforeCurrentDay(int n) {
Calendar c = Calendar.getInstance();
c.add(c.MONTH, -n);
return "" + c.get(c.YEAR) + "-" + (c.get(c.MONTH) + 1) + "-" + c.get(c.DATE); } /**
* 取得系统当前时间后n个月的相对应的一天 * @param n int
* @return String yyyy-mm-dd
*/
public String getNMonthAfterCurrentDay(int n) {
Calendar c = Calendar.getInstance();
c.add(c.MONTH, n);
return "" + c.get(c.YEAR) + "-" + (c.get(c.MONTH) + 1) + "-" + c.get(c.DATE); } /**
* 取得系统当前时间前n天 * @param n int
* @return String yyyy-mm-dd
*/
public String getNDayBeforeCurrentDate(int n) {
Calendar c = Calendar.getInstance();
c.add(c.DAY_OF_MONTH, -n);
return "" + c.get(c.YEAR) + "-" + (c.get(c.MONTH) + 1) + "-" + c.get(c.DATE);
} /**
* 取得系统当前时间后n天 * @param n int
* @return String yyyy-mm-dd
*/
public String getNDayAfterCurrentDate(int n) {
Calendar c = Calendar.getInstance();
c.add(c.DAY_OF_MONTH, n);
return "" + c.get(c.YEAR) + "-" + (c.get(c.MONTH) + 1) + "-" + c.get(c.DATE);
} //---------------------------------------------------------------------
//取过去一个时间对应的系统当年的一天 public String getCurrentDateAfterPastDate(String sPastDate) {
if (sPastDate != null && !sPastDate.equals("")) {
Date date = switchStringToDate(sPastDate);
Calendar c = Calendar.getInstance();
c.setTime(date);
int iPastYear = c.get(c.YEAR);
Calendar c1 = Calendar.getInstance();
int iCurrentYear = c1.get(c1.YEAR);
c.add(c.YEAR, iCurrentYear - iPastYear);
return "" + c.get(c.YEAR) + "-" + (c.get(c.MONTH) + 1) + "-" +
c.get(c.DATE);
}
else {
return null;
}
} /**
* 将一个日期字符串转化成日期 * @param sDate String
* @return Date yyyy-mm-dd
*/
public Date switchStringToDate(String sDate) {
Date date = null;
try {
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
date = df.parse(sDate); }
catch (Exception e) {
System.out.println("日期转换失败:" + e.getMessage());
}
return date;
} /**
* 输入两个字符串型的日期,比较两者的大小
* @param fromDate String
* @param toDate String
* @return boolean before为true
*/
public boolean compareTwoDateBigOrSmall(String fromDate, String toDate) {
Date dateFrom = this.switchStringToDate(fromDate);
Date dateTo = this.switchStringToDate(toDate);
if (dateFrom.before(dateTo)) {
return true;
}
else {
return false;
}
} /**
* 将一个日期字符串转化成Calendar
* @param sDate String
* @return Calendar
*/
public Calendar switchStringToCalendar(String sDate) {
Date date = switchStringToDate(sDate);
Calendar c = Calendar.getInstance();
c.setTime(date);
return c;
} /**
* 将一个日期转化成Calendar
* @param date Date
* @return Calendar
*/
public Calendar switchStringToCalendar(Date date) {
Calendar c = Calendar.getInstance();
c.setTime(date);
return c;
} public String string2Date(String dateString)
throws java.lang.Exception {
/*DateFormat dateFormat;
dateFormat = new SimpleDateFormat("yyyy-MM-dd kk:mm:ss");
dateFormat.setLenient(false);
java.util.Date timeDate = dateFormat.parse(dateString);//util类型
//java.sql.Date dateTime = new java.sql.Date(timeDate.getTime());//sql类型
java.sql.Timestamp dateTime = new java.sql.Timestamp(timeDate.getTime());//Timestamp类型
*/
SimpleDateFormat newk = new SimpleDateFormat ("yyyy.MM.dd hh:mm:ss");
SimpleDateFormat old = new SimpleDateFormat("MMM dd hh:mm:ss yyyy"); String strDate = "Mar 22 00:42:00 2002";
Date d = old.parse(strDate);
System.out.println(newk.format(d)); return newk.format(d);
} /**
* 取得某个时间前n个月的相对应的一天 * @param sDate String
* @param n int
* @return String yyyy-mm-dd
*/
public String getNMonthBeforeOneDay(String sDate, int n) {
Calendar c = switchStringToCalendar(sDate);
c.add(c.MONTH, -n);
return "" + c.get(c.YEAR) + "-" + (c.get(c.MONTH) + 1) + "-" + c.get(c.DATE); } //取得某个时间后n个月的相对应的一天 public String getNMonthAfterOneDay(String sDate, int n) {
Calendar c = switchStringToCalendar(sDate);
c.add(c.MONTH, n);
return "" + c.get(c.YEAR) + "-" + (c.get(c.MONTH) + 1) + "-" + c.get(c.DATE); } //取得某个时间前n天,格式为yyyy-mm-dd
public String getNDayBeforeOneDate(String sDate, int n) {
Calendar c = switchStringToCalendar(sDate);
c.add(c.DAY_OF_MONTH, -n);
return "" + c.get(c.YEAR) + "-" + (c.get(c.MONTH) + 1) + "-" + c.get(c.DATE);
} //取得某个时间后n天,格式为yyyy-mm-dd
public String getNDayAfterOneDate(String sDate, int n) {
Calendar c = switchStringToCalendar(sDate);
c.add(c.DAY_OF_MONTH, n);
return "" + c.get(c.YEAR) + "-" + (c.get(c.MONTH) + 1) + "-" + c.get(c.DATE);
} //判断系统当前时间是不是润年 public boolean isRunNian() {
java.util.Calendar rightNow = java.util.Calendar.getInstance();
int year = rightNow.get(rightNow.YEAR);
if (0 == year % 4 && (year % 100 != 0 || year % 400 == 0)) {
return true;
}
else {
return false;
} }
public Date StringToDate(String s){
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
java.util.Date date=null;
Date dateTime=null;
if(!s.equals("")){
try {
date=sdf.parse(s);
dateTime =new Date(date.getTime());
} catch (ParseException e) {
e.printStackTrace();
}
}
return dateTime;
}
}
import java.util.*;
import java.text.*;class test {
public static void main(String[] args) {
Calendar c = Calendar.getInstance();// 获得一个日历的实例
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
Date date = null;
try {
date = sdf.parse("2010-01");// 初始日期
} catch (Exception e) { }
c.setTime(date);// 设置日历时间
c.add(Calendar.MONTH, -1);
System.out.println("得到你想要得前1个月的日期 ===" + sdf.format(c.getTime())); }
}
那俩L的同学太恐怖了。。LZ好好研究下java.util.Calendar就可以了另外 如果你这个数据是从库里取出来的话 可以放到库里计算的 你用的是啥库?。。
也可以使用java.util.Calendar