java获取本周
① java中获取本周内所有日期
importjava.text.SimpleDateFormat;
importjava.util.Calendar;
publicclassDataTest{
publicstaticvoidmain(String[]args){
printWeekdays();
}
privatestaticfinalintFIRST_DAY=Calendar.MONDAY;
(){
Calendarcalendar=Calendar.getInstance();
setToFirstDay(calendar);
for(inti=0;i<7;i++){
printDay(calendar);
calendar.add(Calendar.DATE,1);
}
}
(Calendarcalendar){
while(calendar.get(Calendar.DAY_OF_WEEK)!=FIRST_DAY){
calendar.add(Calendar.DATE,-1);
}
}
privatestaticvoidprintDay(Calendarcalendar){
SimpleDateFormatdateFormat=newSimpleDateFormat("yyyyMMddEE");
System.out.println(dateFormat.format(calendar.getTime()));
}
}
② Java判断日期是否是本日,本周,本月
publicstaticvoidmain(String[]args){
SimpleDateFormatformat=newSimpleDateFormat("yyyyMMdd");
CalendarfirstDayOfWeek=Calendar.getInstance(Locale.getDefault());
firstDayOfWeek.setFirstDayOfWeek(Calendar.MONDAY);
intday=firstDayOfWeek.get(Calendar.DAY_OF_WEEK);
firstDayOfWeek.add(Calendar.DATE,-day+1+1);//后面的+1是因为从周日开始
//本周一的日期
System.out.println(format.format(firstDayOfWeek.getTime()));
CalendarlastDayOfWeek=Calendar.getInstance(Locale.getDefault());
lastDayOfWeek.setFirstDayOfWeek(Calendar.MONDAY);
day=lastDayOfWeek.get(Calendar.DAY_OF_WEEK);
lastDayOfWeek.add(Calendar.DATE,7-day+1);
//本周星期天的日期
System.out.println(format.format(lastDayOfWeek.getTime()));
}
这一段代码可以获取本周一的日期、本周日的日期,比如本周一为20180702、本周日为20180708。只要判断给定的日期数字是否在[20180702, 20180708]范围内即可
以上的是判断日期是否是本周的方法,至于本日和本月就很好判断了,直接将日期格式化为20180702类似的数字,然后与今天进行比较即可判断是否本日,与本月的字符串201807进行比较,看字符串的前面6个字符是否equals即可
③ 在java8中如何处理日期和时间
在Java8中处理日期和时间涉及几个关键步骤和类,包括创建对象、访问字段、格式化与解析、操作与加减、计算间隔、比较和时区处理。本段落将详细介绍这些步骤。
首先,创建日期、时间或日期时间对象。使用`LocalDate`表示日期,`LocalTime`表示时间,而`LocalDateTime`表示日期时间。这些类都是不可变且线程安全的。
获取日期和时间的各个部分,如年份、月份、日期、小时、分钟和秒。使用如`getYear()`, `getMonthValue()`, `getDayOfMonth()`, `getHour()`, `getMinute()`和`getSecond()`等方法。
格式化和解析日期时间涉及`DateTimeFormatter`类。此类用于日期时间与字符串之间的转换。提供预定义格式或自定义格式。
将日期时间对象转换为字符串使用`format()`方法,而将字符串转换为日期时间对象则通过`parse()`方法实现。使用预定义格式器通常是最便捷的方法。
执行日期和时间的加减操作使用`plus`和`minus`系列方法。修改某个部分则通过`with`系列方法进行。
计算间隔利用`ChronoUnit`类提供的方法。比较日期或时间使用`isBefore()`, `isAfter()`和`isEqual()`方法。
处理时区时,`ZonedDateTime.now()`方法用于获取当前日期时间,同时传入`ZoneId`对象可获取指定时区的当前日期时间。转换时区使用`withZoneSameInstant`方法,保持瞬时点不变。
获取所有可用时区列表,使用`ZoneId.getAvailableZoneIds()`方法。
计算两个日期之间的间隔使用`Period`类,获取年数、月数和天数分别用`period.getYears()`, `period.getMonths()`, `period.getDays()`方法。计算两个时间或日期时间之间的间隔用`Duration`类,获取小时数、分钟数和秒数分别用`ration.toDays()`, `ration.toHours()`, `ration.toMinutes()`方法。
`Instant`类表示时间线上的一个点,从1970-01-01T00:00:00Z开始的秒数。
`TemporalAdjusters`类提供调整日期时间的方法,如获取本月的第一个星期一、下一个星期五、本周的第一天、本月的最后一天或今年的最后一天。