如何一次为日历对象设置多个属性?
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.000
A.M.
编辑 1:我认为这个问题很清楚并且可以理解。请考虑投票,因为我不能再问关于 Whosebug 的问题了。
Calendar
class中有一个重载的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()));
这是我现有的代码片段:
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.000
A.M.
编辑 1:我认为这个问题很清楚并且可以理解。请考虑投票,因为我不能再问关于 Whosebug 的问题了。
Calendar
class中有一个重载的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()));