2012-10-23 174 views
-2

我想讓月中的某一天實際上從該字段中減去天數。從日曆中獲取自定義的月份日期

注:這一天是定製選擇,比如2012年9月10日

Date d2 = new SimpleDateFormat("yyyy-M-dd").parse("2012-10-24); 

Calendar calendar= Calendar.getInstance(); 
Calendar csd= Calendar.getInstance(); 
calendar.setTime(d2); 

csd.add(calendar.DAY_OF_MONTH, -5); 

csd.add(calendar.get(Calendar.DAY_OF_MONTH),-5)

的上面實際上會出錯說出IllegalArgumentException,但是當我將其系統打印出來時打印出正確的值

calendar.DAY_OF_MONTH不會打印出在d2中的正確日期。如果我做錯了什麼,或者這不是正確的方法,我很困惑?

UPDATE

這是我在我的代碼有什麼。我想要任何日期範圍的數組。假設用戶已將結束日期設置爲"2012-8-20",這在d2中。我想在一個數組中使用30天的日期值,該代碼不起作用。

for(int count = 30; count >=1; count--) { 
    Calendar csd = Calendar.getInstance(); 
    csd.add(calendar.DAY_OF_MONTH, -count); 
    String dt = (csd.get(Calendar.YEAR)) + "-" + (csd.get(Calendar.MONTH)+1) + "-" + (csd.get(Calendar.DATE)); 
    aDays[30 - count] = dt; 
} 
+0

你可以編輯提供一個可運行的例子,說明問題,樣本輸入和預期的輸出?在哪裏/如何定義「calendarEndDate」?你爲什麼創建兩個不同的日曆?爲什麼「d1」相關? – DNA

+0

@DNA。我剛剛複製了代碼。在這種情況下,我不使用d1,但是爲了其他目的,我在代碼中使用了它。 – user525146

+0

csd.add(calendar.get(Calendar.DAY_OF_MONTH),-5); Calendar.DAY_OF_MONTH不是有效的參數。 – PbxMan

回答

1

它確實爲我工作。

 Date d2 = new SimpleDateFormat("yyyy-M-dd").parse((String)"2012-10-24"); 

     Calendar calendar= Calendar.getInstance(); 
     Calendar csd= Calendar.getInstance(); 
     calendar.setTime(d2); 
     calendar.add(calendar.DAY_OF_MONTH, -5);   
     System.out.println(new Date(calendar.getTimeInMillis())); 
     csd.add(csd.DAY_OF_MONTH, -5);  
     System.out.println(new Date(csd.getTimeInMillis()));  


csd.add(calendar.get(Calendar.DAY_OF_MONTH), -5);//wrong is giving an invalid argument 

UPDATE

 String[] aDays = new String[30]; 
     SimpleDateFormat sdf = new SimpleDateFormat("yyyy-M-dd"); 
     for (int count = 30; count >= 1; count--) { 
      Calendar csd = Calendar.getInstance(); 
      csd.add(Calendar.DAY_OF_MONTH, -count); 
      aDays[30 - count] = (sdf.format(new Date(csd.getTimeInMillis())));  
     } 

     //to double check it 
     for (int count = 30; count >= 1; count--) { 
      System.out.println(aDays[30 - count]); 
     } 

我希望你有你需要理解它是如何工作的,運氣好伴侶!

+0

請檢查更新 – user525146

+0

如果您想設置日期,請添加csd.setTime(d2) – PbxMan

2
csd.add(calendarEndDate.get(Calendar.DAY_OF_MONTH), -5) 

第一參數應該是場的類型。

例子:

csd.add(Calendar.DAY_OF_MONTH, -5) 

你的情況:

calendarEndDate.get(Calendar.DAY_OF_MONTH) 

返回月份的一天,但Calendar預計有哪些申請需要進行修改。

請參閱日曆API documentation

編輯:

calendar.add(calendar.DAY_OF_MONTH, -5); 
int dayofMonth = calendar.get(Calendar.DAY_OF_MONTH); 
System.out.println(dayofMont); 
+0

'Calendar.DAY_OF_MONTH'會打印錯誤的值。我將日期設置爲2012-10-22,當我試圖將其系統輸出時,打印出值爲5 – user525146

+0

當您選擇自定義日期或需要在代碼中進行哪些更改時,能否幫助我獲得正確答案? – user525146

+0

Calendar.DAY_OF_MONTH是常量,它指示您想要在日曆中獲取或設置哪個字段。要獲取月份的日期,請寫下:csd.get(Calendar.DAY_OF_MONTH)。如果你想減去5天,你寫csd.add(Calendar.DAY_OF_MONTH,-5); – jjczopek

相關問題