我的目标是从日期对象中提取日期和月份。我无法使用 getDate() 和 getMonth() ,因为它们已被弃用。
我使用了日历 API,但是无法获得所需的结果。请您推荐一下...
我的目标是将月份和日期提取为整数。
Scanner input = new Scanner(System.in);
String a;
SimpleDateFormat formatter = new SimpleDateFormat("dd/mm/yyyy");
System.out.println("Please type in your name...");
a = input.nextLine();
System.out.println("You entered the name " + a);
//To print the current date
Date DOB;
Date presentdate = new Date();
System.out.println("Today is " + presentdate);
//To get a birthdate
System.out.println("Enter yout DOB in dd/mm/yyyy");
String b1 = input.nextLine();
DOB = formatter.parse(b1);
System.out.println("Your Date of Birth is" + DOB);
Calendar cal = Calendar.getInstance(); ;
cal.setTime(DOB);
System.out.println(cal);
int month = cal.get(Calendar.MONTH);
int date1 = cal.get(Calendar.DATE);
System.out.println(month);
System.out.println(date1);
在 Java 日历中:-
Calendar.JANURAY=0;
Calendar.FEBRUARY=1;
.. ..
Calendar.DECEMBER=11;
因此更改您的代码以获得这样的月份:-
Calendar cal = Calendar.getInstance(); ;
cal.setTime(DOB);
int month = cal.get(Calendar.MONTH)+1;
int date1 = cal.get(Calendar.DATE);
这很好,但有两件事要记住
您的格式不正确:月份需要“dd/MM/yy”,因为“mm”代表分钟:
SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
然后提取信息:
Calendar cal = Calendar.getInstance();
cal.setTime(DOB);
int month = cal.get(Calendar.MONTH) +1;
int date1 = cal.get(Calendar.DATE);
月份将从 0 开始,这就是 +1 的原因。
在现代 Java 中,使用 java.time 类。切勿使用
Calendar
。
LocalDate
类。
DateTimeFormatter formatter = DateTimeFormatter.ofPattern( "dd/MM/uuuu" ) ;
LocalDate ld = LocalDate.parse ( input , formatter ) ;
提取零件。
int y = ld.getYear() ;
int m = ld.getMonthValue() ;
int d = ld.getDayOfMonth() ;