Как получить день месяца из отформатированной строки? - PullRequest
0 голосов
/ 11 марта 2012

Когда я создаю Date из анализа String и получаю доступ к дню месяца, я получаю неправильное значение.

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 ]

1 голос
/ 11 марта 2012

Вот фрагмент, который больше не использует устаревшие методы, исправляет проблемы с именами и упрощает вывод.

    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 голосов
/ 22 декабря 2013

Такой вид работы намного проще при использовании сторонней библиотеки, 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();
0 голосов
/ 11 марта 2012

Вы должны использовать

int DPDDay = datearr.getDate();

getDay () вернуть день в неделю

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...