如何一次为日历对象设置多个属性?

How to set multiple attributes for calender object at once?

这是我现有的代码片段:

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 的新手。如果有其他方法可以实现此目的,请帮助我。

如果可能,请也给其他人解决方案。 Objective是将给定的cal对象设置为00:00:00.000A.M.

编辑 1:我认为这个问题很清楚并且可以理解。请考虑投票,因为我不能再问关于 Whosebug 的问题了。

Calendarclass中有一个重载的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()));

它returns00:00:00.000 AM

如果可能,避免使用旧版 Calendar class。请使用 java.time 包中的 classes,例如:

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

但如果一定要用Calendar,那就考虑用Calendar.Builder,例如:

Calendar cal = new Calendar.Builder()
            .setTimeOfDay(0, 0, 0, 0)  // hour, minute, second, millis
            .build();

老日历class可以按当前代java时间设置classes:

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