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`類提供調整日期時間的方法,如獲取本月的第一個星期一、下一個星期五、本周的第一天、本月的最後一天或今年的最後一天。