2012-03-11 95 views
-1

當我通過解析String創建Date並訪問月份的日期時,我得到錯誤的值。如何從格式化的字符串中獲取月份的日期?

Date datearr = null; 
DateFormat df1 = new SimpleDateFormat("dd-MM-yyyy"); 
String dataa = "17-03-2012"; 
try { 
    datearr = df1.parse(dataa); 
} catch (ParseException e) { 
    Toast.makeText(this, "err", 1000).show(); 
} 

int DPDMonth = datearr.getMonth() + 1; 
int DPDDay = datearr.getDay(); 
int DPDYear = datearr.getYear() + 1900; 

System.out.println(Integer.toString(DPDDay)+"-"+Integer.toString(DPDMonth)+"-"+Integer.toString(DPDYear)); 

爲什麼我得到0代替17

03-11 10:24:44.286: I/System.out(2978): 0-3-2012 
+3

閱讀您使用的方法的javadoc,注意它們的棄用警告,並替換爲文檔建議的代碼。而且,想想執行代碼'datearr.getMonth()'時,如果您有ParseException會發生什麼。 – 2012-03-11 10:55:50

+2

並請使用與變量命名有關的Java約定......它非常討厭嘗試讀取代碼並將變量突出顯示爲一個類。 – Marcelo 2012-03-11 11:06:44

+0

對不起,我的第一篇文章在這裏。 – 2012-03-11 11:14:38

回答

1

回到這裏一天的一個片段中不使用過時的方法了,修復的命名問題,並簡化了輸出。

Date datearr = null; 
    DateFormat df1 = new SimpleDateFormat("dd-MM-yyyy"); 
    String dataa = "17-03-2012"; 
    try { 
     datearr = df1.parse(dataa); 
    } catch (ParseException e) { 
     Toast.makeText(this, "err", 1000).show(); 
     return; // do not continue in case of a parse problem!! 
    } 

    // "convert" the Date instance to a Calendar 
    Calendar cal = Calendar.getInstance(); 
    cal.setTime(datearr); 

    // use the Calendar the get the fields 
    int dPDMonth = cal.get(Calendar.MONTH)+1; 
    int dPDDay = cal.get(Calendar.DAY_OF_MONTH); 
    int dPDYear = cal.get(Calendar.YEAR); 

    // simplified output - no need to create strings 
    System.out.println(dPDDay+"-"+dPDMonth+"-"+dPDYear); 
0

您應該使用

int DPDDay = datearr.getDate(); 

getDay()在本週

+0

zoon nooz,thx!對不起,大家都是因爲我的粗心大意 – 2012-03-11 11:19:15

0

這種工作在使用第三方庫時更容易,Joda-Time 2.3。

// © 2013 Basil Bourque. This source code may be used freely forever by anyone taking full responsibility for doing so. 
// import org.joda.time.*; 
// import org.joda.time.format.*; 

String dateString = "17-03-2012"; 

DateTimeFormatter formatter = DateTimeFormat.forPattern("dd-MM-yyyy"); 
DateTime dateTime = formatter.parseDateTime(dateString).withTimeAtStartOfDay(); 

int dayOfMonth = dateTime.getDayOfMonth(); 
相關問題