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

时间:2014-09-02 18:19:56

标签: java

我的目标是从日期对象中提取日期和月份。我不能使用getDate()和getMonth(),因为它们已被弃用。

我使用了Calendar 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);

3 个答案:

答案 0 :(得分: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)

这很好,但要记住两件事

  1. 如果您的格式化程序使用格式“”dd / MM / yyyy“< - 而不是月份的大写字母
  2. ,则此方法有效
  3. 月份为零索引,因此6月虽然表示为“06”,但将显示为5。

答案 2 :(得分: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的原因。