public class TestDate {
private static int ii = 0;
private static Calendar calendar;
public static void main(String[] args) {
if (ii == 0) {
calendar = Calendar.getInstance();
ii = calendar.DAY_OF_MONTH;
}
calendar.add(ii, -1);
Date Days = calendar.getTime();
SimpleDateFormat DateTime = new SimpleDateFormat("yyyy-MM-dd   hh:mm:ss");
String sDateTime = DateTime.format(Days);
ii = calendar.get(calendar.DAY_OF_MONTH);
//System.out.println(calendar.get(calendar.DAY_OF_MONTH));
System.out.println(sDateTime);
}
}
怎么使每运行一次当前日期减少一天????

解决方案 »

  1.   

    calendar.add(ii, -1);  这句的意思没看懂。
    用calendar.set方法试试。
      

  2.   

    calendar.add(ii, -1);这句话意思就是想用上次减少后的日期作为现在的日期,当再次运行时,就在它的基础上再减一现在的问题就是怎么把减一后的日期存到一个变量中,再次运行时,这个变量不被初始化,有什么办法呢?
      

  3.   


    保存到数据库?
    要不你有个长期不会关闭的JVM,然后再用一个类来保存,可当JVM死了以后,你得手动设置日期,所以还是保存到数据库吧
      

  4.   


    保存到一个类里,然后序列化,不过序列化也是以文件形式来保存啊要是文件和数据库都不能用,就只能放到内存,就是JVM,可JVM重启就完了
      

  5.   

    可以放到内存,我的需求其实也是个WEB应用,这种办法可行,谢谢你soli11722984,但具体点好吗?
      

  6.   


    晕。那就直接把那值丢到application去,然后通过一个同步的方法去更新日期,那不就得了?
    可WEB一重启,那日期又会设回初始值了
      

  7.   

    calendar.add(ii, -1)
    你可以把1弄成变量(++后在set进去),然后存变量就好了,比存日期应该简单些吧;
      

  8.   

    问题解决,谢谢楼上兄弟们没办法,头脑一时短路了String act_date = this.currDate();//取得当前日期//减天数   
    if(session.get("cutdate")!=null){
      act_date=(String) session.get("cutdate");
    }
      ymd=DateFormat.nDaysAfterOneDateString(act_date,-1);
      session.put("cutdate", ymd);// 给定一个日期型字符串,返回加减n天后的日期型字符串
    public static String nDaysAfterOneDateString(String basicDate, int n) {
    SimpleDateFormat df = new SimpleDateFormat("yyyy年MM月dd日");
    Date tmpDate = null;
    try {
    tmpDate = df.parse(basicDate);
    } catch (Exception e) {
    // 日期型字符串格式错误
    }
    long nDay = (tmpDate.getTime() / (24 * 60 * 60 * 1000) + 1 + n)* (24 * 60 * 60 * 1000);
    tmpDate.setTime(nDay); return df.format(tmpDate);
    }