public static void demo() throws ParseException {
  System.out.println("请输入指定格式的日期yyyy-MM-dd:");
  Scanner scan = new Scanner(System.in);
  String date = scan.nextLine();
  SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  Date d = sdf.parse(date);
  Calendar c = Calendar.getInstance();
  c.setTime(d);
  c.add(c.DAY_OF_MONTH, -1);
  System.out.println(sdf.format(c.getTime()));
 } 请高手帮我解释一下string date=scan.nextline();后面的分别是什么意思,具体点啊,谢谢。谁的具体。我一次性给了全部分。

解决方案 »

  1.   

    定义了一个日期格式;
    把字符串解析后放在d中;
    定义一个日期实例c;
    c的日期设置为d;
    把c的日期减1;
    然后输出
      

  2.   

    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");//指定格式为yyyy-MM-dd
    Date d = sdf.parse(date); //分析字符串,得到输入的日期类型
    Calendar c = Calendar.getInstance(); //获取Calendar的实例
    c.setTime(d); //将Calendar c的时间设置为输入的日期
    c.add(c.DAY_OF_MONTH, -1); //DAY_OF_MONTH (即日期) 减1
    System.out.println(sdf.format(c.getTime())); 
    //c.getTime()是返回Calendar c中的时间(即已经运算了日期减1)
    //sdf.format是将日期转换为字符串,格式由第一行语句指定了
      

  3.   

    8楼,你解释的已经很详细了,可是我是个菜鸟,还有点不明白为什么要获取Calendar的实例,为什么又将Calendar c的时间设置为输入的日期
      

  4.   

    不获取Calendar的实例就无法进行方法调用啊。如果不设置为输入的日期,默认情况下Calendar为当前日期