从特定日期获取日期、月份和年份

6

我想从特定日期中获取日期、月份和年份。

我使用了以下代码:

 String dob = "01/08/1990";

        int month = 0, dd = 0, yer = 0;

        try {

            SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy");
            Date d = sdf.parse(dob);
            Calendar cal = Calendar.getInstance();
            cal.setTime(d);
            month = cal.get(Calendar.MONTH);
            dd = cal.get(Calendar.DATE);
            yer = cal.get(Calendar.YEAR);

        } catch (Exception e) {
            e.printStackTrace();
        }

因此,从上面的代码中我得到了 月份-0,年份-1990和日期-8

但是我想要月份-01,日期-08和年份-1990

我已经定义了日期格式,但是我没有从日期、月份和年份得到完美的值。


那么将月份值增加呢? - MetaSnarf
Calendar.get返回int值 - 您需要字符串。DecimalFormat是您寻找的类,用于(int)1 -> "01"格式化。另外,cal.get(Calendar.MONTH)返回比预期少一个! 一月是0,二月是1,以此类推。 - ppeterka
请注意,日历中的“月份”将从0-11。 - SripadRaj
你需要将月份加1。 - Jay Rathod
3个回答

9

日历中的月份范围是从0到11。因此,在月份上需要加上+1。

String dob = "01/08/1990";
String month = 0, dd = 0, yer = 0;
try {
     SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy");
     Date d = sdf.parse(dob);
     Calendar cal = Calendar.getInstance();
     cal.setTime(d);
     month = checkDigit(cal.get(Calendar.MONTH)+1);
     dd = checkDigit(cal.get(Calendar.DATE));
     yer = checkDigit(cal.get(Calendar.YEAR));

} catch (Exception e) {
     e.printStackTrace();
}

在添加前导零时使用checkDigit()方法,该方法返回String值。如果要转换为整数,则可以像下面这样做:Integer.parseInt(YOUR_STRING);

// ADDS 0  e.g - 02 instead of 2
    public String checkDigit (int number) {
        return number <= 9 ? "0" + number : String.valueOf(number);
    }

我已经使用以下代码:month = Integer.parseInt(checkDigit(cal.get(Calendar.MONTH) + 1)); dd = Integer.parseInt(checkDigit(cal.get(Calendar.DATE))); yer = cal.get(Calendar.YEAR);但是它给出了月份-1,日期-8。我想要的是月份-01,日期-08。 - user3997016
能否将月、日和年份作为“字符串”使用?因为如果数字小于10,checkDigit始终会返回带有前导零的值。但是,可能会再次使用Integer.parseInt()去除零。 - Jitesh Prajapati

2
public static void main (String[] args) throws java.lang.Exception
{
     String dob = "01/08/1990";

    int month = 0, dd = 0, yer = 0;

    try {

        SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy");
        Date d = sdf.parse(dob);
        Calendar cal = Calendar.getInstance();
        cal.setTime(d);
        month = cal.get(Calendar.MONTH);
        dd = cal.get(Calendar.DATE);
        yer = cal.get(Calendar.YEAR);

        System.out.println("Month - " + String.format("%02d", (month+1)));
        System.out.println("Day - " + String.format("%02d", dd));
        System.out.println("Year - " + yer);

    } catch (Exception e) {
        e.printStackTrace();
    }
}

由于日历中的月份是从0到11表示的,所以我们需要加1。

我已经执行了一个示例,您可以在这里检查。


0
java.util.Calendar 中,月份是从零开始计算的,因此它会给出正确的值。
请检查 Calendar 类中的常量:
public final static int JANUARY = 0;
public final static int FEBRUARY = 1;
...
public final static int DECEMBER = 11;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接