Подтвердить что ты не робот

Как получить день месяца?

Я пытаюсь найти, в какой день месяца это.

Например, сегодня 29 августа 2010 года.

То, что я хотел бы сделать, это просто получить число дней, например, 29 или 30. Какой день месяца это.

Как я могу это сделать?

4b9b3361

Ответ 1

Вам нужно будет получить экземпляр календаря и получить его в день месяца

Calendar cal = Calendar.getInstance();
int dayOfMonth = cal.get(Calendar.DAY_OF_MONTH);

String dayOfMonthStr = String.valueOf(dayOfMonth);

Вы также можете получить DAY_OF_WEEK, DAY_OF_YEAR, DAY_OF_WEEK_IN_MONTH и т.д.

Ответ 2

Следующий способ поможет вам найти день любой указанной даты:

public static int getDayOfMonth(Date aDate) {
    Calendar cal = Calendar.getInstance();
    cal.setTime(aDate);
    return cal.get(Calendar.DAY_OF_MONTH);
}

Ответ 3

Посмотрите GregorianCalendar, что-то вроде:

final Calendar now = GregorianCalendar.getInstance()
final int dayNumber = now.get(Calendar.DAY_OF_MONTH);

Ответ 4

TL;DR

LocalDate.now( 
    ZoneId.of( "America/Montreal" ) 
).getDayOfMonth()

java.time

Современный подход - это класс LocalDate для представления значения только для даты.

Часовой пояс имеет решающее значение для определения текущей даты. Для любого данного момента дата изменяется по всему миру по зонам.

ZoneId z = ZoneId.of( "America/Montreal" );
LocalDate ld = LocalDate.now( z ) ;
int dayOfMonth = ld.getDayOfMonth();

Вы также можете получить день недели.

DayOfWeek dow = ld.getDayOfWeek();

Joda времени

UPDATE: проект Joda-Time теперь находится в режиме обслуживания и рекомендует переносить классы java.time.

Используя Joda-Time 2.5 библиотеку, а не печально известные классы java.util.Date и .Calendar.

Часовой пояс имеет решающее значение для определения даты. Лучше указывать зону, а не полагаться неявно на назначенный часовой пояс JVM, назначаемый по умолчанию.

DateTimeZone zone = DateTimeZone.forID( "America/Montreal" );
DateTime now = DateTime.now( zone ).withTimeAtStartOfDay();
int dayOfMonth = now.getDayOfMonth();

Или используйте аналогичный код с классом LocalDate, у которого нет времени на время.

Ответ 5

Вы можете начать с чтения документации для Date. Затем вы понимаете, что методы Dates устарели и вместо этого вместо Calender.

Calendar now = Calendar.getInstance();
System.out.println(now.get(Calendar.DAY_OF_MONTH));

Ответ 6

Обновление Java 8

В Java 8 представлены следующие пакеты для обработки времени и даты.

java.time.*;
java.time.format.*;

java.time.chono.*;    
java.time.temporal.*;
java.time.zone.*;

Они более организованные и интуитивно понятные.

Нам нужны только два лучших пакета для обсуждения.
Существует 3 класса верхнего уровня - LocalDate, LocalTime, LocalDateTime для описания Date, Time и DateTime соответственно. Хотя они правильно отформатированы в toString(), каждый класс имеет форматный метод, который принимает DateTimeFormatter для форматирования по-своему.

DateTimeFormatter также можно использовать дату, указанную в день. У него мало

import java.time.*;
import java.time.format.*;

class DateTimeDemo{
    public static void main(String...args){
        LocalDateTime x = LocalDateTime.now();
        System.out.println(x.format(DateTimeFormatter.ofLocalizedDate(FormatStyle.FULL)));//Shows Day and Date.

        System.out.println(x.format(DateTimeFormatter.ofPattern("EE")));//Short Form
        System.out.println(x.format(DateTimeFormatter.ofPattern("EEEE")));//Long Form

    }
}

ofLocalizedTime принимает FormatStyle, который является перечислением в java.time.format

ofPattern принимает String с ограниченными символами шаблона ограниченной длины. Вот символы, которые можно передать в метод toPattern.

введите описание изображения здесь

Вы можете попробовать различное количество шаблонов, чтобы увидеть, как будет работать вывод.

Подробнее о Java 8 DateTime API здесь

Ответ 7

//This will get you the day of the month
String.valueOf((Calendar.getInstance()).get(Calendar.DAY_OF_MONTH))