JAVA怎么获取当前时间?为什么当前时间和我前面输入的时间有关系?

package test4;
import java.util.Date;
import java.text.SimpleDateFormat;
import java.util.*;
public class birth {

public static void main(String[] args) {
    // TODO 自动生成的方法存根
    Scanner sc=new Scanner(System.in);
    System.out.println("请输入你的生日:例如1949-10-01");
    String bir=sc.nextLine();
    String year=bir.substring(0,4);
    String month=bir.substring(5,7);
    String day=bir.substring(8,10);
    Calendar cel=Calendar.getInstance();
    cel.set(Integer.parseInt(year), Integer.parseInt(month),Integer.parseInt(day));
    java.util.Date date1=cel.getTime();

    System.out.println("输出对应的是星期几:");
    int week=cel.get(Calendar.DAY_OF_WEEK);
    switch(week){
    case 1:System.out.println("MONDAY");
    break;
    case 2:System.out.println("TUESDAY");
    break;
    case 3:System.out.println("WEDNSSDAY");
    break;
    case 4:System.out.println("THESDAY");
    break;
    case 5:System.out.println("FIRDAY");
    break;
    case 6:System.out.println("SAtuatday");
    break;
    case 7:System.out.println("sunday");
    break;

    }
    int nowday=cel.get(Calendar.DATE);
    int nowyear=cel.get(Calendar.YEAR);
    int nowmonth=cel.get(Calendar.MONTH);
    System.out.println(nowmonth);
    System.out.println(nowyear);
    System.out.println(nowday);

}}


前面的代码判断星期几我是对了,后面要计算输入的日期和当前日期差几天,我试了几次都不对,然后试了下输出当前时间,发现是当前时间有问题。想问下JAVA怎么获得当前时间?我的代码哪里出错了?

图片说明,这是获取当前日期的方法。
图片说明,判断的星期几是错的,例子如下:
图片说明
问题二:图片说明
图片说明,原因是因为正确月份获取是在你设置的值上加一,
问题三:图片说明
最后,如果想知道输入日期的值和当前日期相差的天数只需要用一个转化为Date对象d1,再新建一个Date对象d2,然后两个都转化为毫秒数显示,两个对象的值相减就能得到两者相差的毫秒数,然后转化为天数就可以输出了。
这么多操作实属不易,满意的话还请采纳答案。

提供一个完整的范例作为参考:
示例中根据使用的库不同,给出了四种方法,可根据情况选择。

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Calendar;
import java.util.Date;

public class GetCurrentDateTime {

    private static final DateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
    private static final DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss");

    public static void main(String[] args) {

        Date date = new Date();    //  For java.util.Date
        System.out.println(sdf.format(date));

        Calendar cal = Calendar.getInstance();  // For java.util.Calendar
        System.out.println(sdf.format(cal.getTime()));

        LocalDateTime now = LocalDateTime.now(); //For java.time.LocalDateTime
        System.out.println(dtf.format(now));

        LocalDate localDate = LocalDate.now();  //For  java.time.LocalDate
        System.out.println(DateTimeFormatter.ofPattern("yyy/MM/dd").format(localDate));

    }

}

如果对您有帮助,请采纳答案好吗,谢谢!

JAVA怎么获得当前时间?
直接 new Date() 就可以了!

      SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式
      System.out.println(df.format(new Date()));// new Date()为获取当前系统时间

//先创建日期类对象
Date dat = new Date();
//格式化时间:yyyy代表年MM是月以此类推,年,月这些中文可以用-/等替换
SimpleDateFormat fmt = new SimpleDateFormat(yyyy年MM月dd日 E a h时m分s秒);
//SimpleDateFormat fmt = new SimpleDateFormat(yyyy-MM-dd E a h:m:s);
//将格式化的时间存入字符串
String now=fmt.format(dat.getTime());

刚才的格式化时间后面时分秒是hh mm ss也可以不写
//先创建日期类对象
Date dat = new Date();
//格式化时间:yyyy代表年MM是月以此类推,年,月这些中文可以用-/等替换
SimpleDateFormat fmt = new SimpleDateFormat(yyyy年MM月dd日);
//SimpleDateFormat fmt = new SimpleDateFormat(yyyy-MM-dd);
//将格式化的时间存入字符串
String now=fmt.format(dat.getTime());
你的代码我看了
Calendar cel=Calendar.getInstance();
cel.set(Integer.parseInt(year), Integer.parseInt(month),Integer.parseInt(day));
这是获取指定时间,你的set函数已经把cel对象初始化了,所以里面存的时间是你输入的时间如果想得到当前日期需要你再调用set方法存入当前日期或者你用上面我说的格式化日期得到字符串,然后处理字符串得到你需要的内容。