2016-09-12 247 views
2

我想從特定日期獲取日期,月份和年份。從特定日期獲取日期,月份和年份

我用下面的代碼:

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(); 
     } 

所以從上面的代碼我得到month -0 , yer - 1990 and date - 8

但我想month - 01 , date - 08 and yer - 1990

我也定義了日期格式,但我沒有從日期,月份和年份獲得完美的價值。

+0

如何遞增月份值呢? – MetaSnarf

+0

Calendar.get返回int值 - 你需要字符串。 DecimalFormat是你正在尋找'(int)1' - >'「01」'格式的類。此外,['cal.get(Calendar.MONTH)'返回**少一個**比預期](http://stackoverflow.com/a/13074613/1667004)! – ppeterka

+0

請注意'日曆中的'month'將從'0-11' – SripadRaj

回答

8

月日曆將是從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方法添加前面的零。 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); 
    } 
+0

我已經使用它'month = Integer.parseInt(checkDigit (cal.get(Calendar.MONTH)+ 1)); dd = Integer.parseInt(checkDigit(cal.get(Calendar.DATE))); yer = cal.get(Calendar.YEAR);' 但我給了我第一個月,第八個月。我想要月01,日期 - 08 – deepak

+0

是否可以使用月份,日期和年份作爲'String'?因爲如果number小於10,checkDigit總是返回前一個零的值,但可能是'Integer.parseInt()'再次移除零。 – user392117

1

java.util.Calendar月是基於零的,所以它給你正確的值。

入住Calendar類中的常量:

public final static int JANUARY = 0; 
public final static int FEBRUARY = 1; 
... 
public final static int DECEMBER = 11; 
1
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到它。

我已經執行,您可以檢查here

相關問題