Как установить несколько атрибутов для объекта календаря одновременно? - PullRequest
0 голосов
/ 18 февраля 2020

Это мой существующий фрагмент кода:

Calendar cal = Calendar.getInstance();  
cal.set(Calendar.HOUR_OF_DAY, 0);  
cal.set(Calendar.MINUTE, 0);  
cal.set(Calendar.SECOND, 0);  
cal.set(Calendar.MILLISECOND, 0);  

Я просто хочу назначить эти атрибуты сразу, что-то вроде:

Calendar cal = Calendar.getInstance();  
cal.set(Calendar.HOUR_OF_DAY, Calendar.MINUTE, Calendar.SECOND, Calendar.MILLISECOND, 0);   

Я не уверен, что это возможно или нет потому что я новичок в java. Пожалуйста, помогите мне, если есть другой способ добиться этого.

Если возможно, пожалуйста, дайте другие решения также. Цель состоит в том, чтобы установить данный cal объект на 00:00:00.000 AM

Ответы [ 3 ]

1 голос
/ 18 февраля 2020

Если возможно, избегайте использования устаревшего класса Calendar. Используйте классы из пакета java .time, например:

LocalDateTime todayAtStartOfDay = LocalDate.now().atStartOfDay();

Но если необходимо использовать Calendar, рассмотрите возможность использования Calendar.Builder, например:

Calendar cal = new Calendar.Builder()
            .setTimeOfDay(0, 0, 0, 0)  // hour, minute, second, millis
            .build();
1 голос
/ 18 февраля 2020

Старый класс Календаря может быть установлен текущим поколением java классов времени:

// Current time classes:
LocalDate today = LocalDate.now();
// LocalDate today = LocalDate.of(2020, 2, 18);
LocalDateTime morning = today.atStartOfDay();

// Old classes:
Calendar cal = Calendar.getInstance();
cal.setTime(new Date(morning.toEpochSecond()));
0 голосов
/ 18 февраля 2020

В классе Calendar есть перегруженный метод set:

void java.util.Calendar.set(int year, int month, int date, int hourOfDay, int minute, int second)

К сожалению, вы должны установить свои миллисекунды вручную. И вы также должны использовать форматирование даты. Вот пример

SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss.SSS aa");
Calendar cal = Calendar.getInstance();  
cal.set(0, 0, 0, 0, 0, 0);
cal.set(Calendar.MILLISECOND, 0);
System.out.println(sdf.format(cal.getTime()));

Возвращает 00:00:00.000 AM

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