Java 如何从格式化字符串中获取月份的日期?

Java 如何从格式化字符串中获取月份的日期?,java,parsing,datetime,Java,Parsing,Datetime,当我通过解析字符串创建日期并访问月份的日期时,我得到了错误的值 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(); }

当我通过解析
字符串创建
日期
并访问月份的日期时,我得到了错误的值

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
你应该使用

int DPDDay = datearr.getDate();

getDay()返回一周中的一天

这里有一个片段,它不再使用不推荐的方法,修复了命名问题并简化了输出

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

使用第三方库2.3时,这种工作要容易得多

/©2013巴西尔布尔克。此源代码可以由任何对此承担全部责任的人自由使用。
//导入org.joda.time.*;
//导入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();

阅读您使用的方法的javadoc,注意它们的弃用警告,并用文档建议的代码替换。另外,想想如果执行代码
datearr.getMonth()
时出现ParseException会发生什么情况。请使用与变量命名相关的java约定。。。试图阅读代码并将变量突出显示为类是非常烦人的。对不起,这是我在这里的第一篇文章。如果你对你的问题进行[一点研究](),并包含你的发现,你会从中获得更多的价值。这样我们就知道你尝试了什么,以及你的困境。谢谢,我希望我的下一篇文章会更认真。对不起,我现在没注意