从日期对象中提取日期和月份

问题描述 投票:0回答:4

我的目标是从日期对象中提取日期和月份。我无法使用 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
4个回答
3
投票

在 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); 

1
投票

这很好,但有两件事要记住

  1. 如果您的格式化程序使用格式“”dd/MM/yyyy”,则此方法有效 <- not the capitals for month
  2. 月份是零索引的,因此 6 月虽然表示为“06”,但结果会是 5。

1
投票

您的格式不正确:月份需要“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 的原因。


0
投票

java.time

在现代 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() ;
© www.soinside.com 2019 - 2024. All rights reserved.