Запустите и дата окончания текущего месяца

Также вы можете использовать:

inflater.getContext();

, но я бы предпочел использовать

getActivity()

или

getContext
38
задан leonbloy 21 June 2010 в 11:42
поделиться

4 ответа

Итак:

public Pair<Date, Date> getDateRange() {
    Date begining, end;

    {
        Calendar calendar = getCalendarForNow();
        calendar.set(Calendar.DAY_OF_MONTH,
                calendar.getActualMinimum(Calendar.DAY_OF_MONTH));
        setTimeToBeginningOfDay(calendar);
        begining = calendar.getTime();
    }

    {
        Calendar calendar = getCalendarForNow();
        calendar.set(Calendar.DAY_OF_MONTH,
                calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
        setTimeToEndofDay(calendar);
        end = calendar.getTime();
    }

    return Pair.of(begining, end);
}

private static Calendar getCalendarForNow() {
    Calendar calendar = GregorianCalendar.getInstance();
    calendar.setTime(new Date());
    return calendar;
}

private static void setTimeToBeginningOfDay(Calendar calendar) {
    calendar.set(Calendar.HOUR_OF_DAY, 0);
    calendar.set(Calendar.MINUTE, 0);
    calendar.set(Calendar.SECOND, 0);
    calendar.set(Calendar.MILLISECOND, 0);
}

private static void setTimeToEndofDay(Calendar calendar) {
    calendar.set(Calendar.HOUR_OF_DAY, 23);
    calendar.set(Calendar.MINUTE, 59);
    calendar.set(Calendar.SECOND, 59);
    calendar.set(Calendar.MILLISECOND, 999);
}

PS: Класс Pair - это просто пара двух значений.

59
ответ дан 27 November 2019 в 03:10
поделиться

Простой и Лучший, Попытка этот

Calendar calendar = Calendar.getInstance();
            calendar.add(Calendar.MONTH, 0);
            calendar.set(Calendar.DATE, calendar.getActualMinimum(Calendar.DAY_OF_MONTH));
            Date monthFirstDay = calendar.getTime();
            calendar.set(Calendar.DATE, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
            Date monthLastDay = calendar.getTime();

        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
        String startDateStr = df.format(monthFirstDay);
        String endDateStr = df.format(monthLastDay);

        Log.e("DateFirstLast",startDateStr+" "+endDateStr);
1
ответ дан 27 November 2019 в 03:10
поделиться

Можно реализовать его как указано ниже:

public void FirstAndLastDate() {

    SimpleDateFormat sdf = new SimpleDateFormat("yyy-MM-dd");
    //start date of month
    calendarStart = Calendar.getInstance();
    calendarStart.set(Integer.parseInt((new SimpleDateFormat("yyyy")).format(new Date().getTime()))
            , Integer.parseInt((new SimpleDateFormat("MM")).format(new Date().getTime()))
            , Calendar.getInstance().getActualMinimum(Calendar.DAY_OF_MONTH));

    //End Date of month
    calendarEnd = Calendar.getInstance();
    calendarEnd.set(Integer.parseInt((new SimpleDateFormat("yyyy")).format(new Date().getTime()))
            , Integer.parseInt((new SimpleDateFormat("MM")).format(new Date().getTime()))
            , Calendar.getInstance().getActualMaximum(Calendar.DAY_OF_MONTH));

    Toast.makeText(this, sdf.format(calendarStart.getTime()) + "\n" + sdf.format(calendarEnd.getTime()), Toast.LENGTH_SHORT).show();

}
0
ответ дан 27 November 2019 в 03:10
поделиться

Если у вас есть возможность, то лучше избегать ужасного Java Date API, и использовать вместо него Jodatime. Вот пример:

LocalDate monthBegin = new LocalDate().withDayOfMonth(1);
LocalDate monthEnd = new LocalDate().plusMonths(1).withDayOfMonth(1).minusDays(1);
29
ответ дан 27 November 2019 в 03:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: