Date Time Java API Series 27 ----- Jdk8 new date and time API class java.time package, create a calendar application uses xk-time tools.

1. Class Calendar

1.1 Calendar class CalendarWrapper

package com.xkzhangsan.time.calendar;

import java.io.Serializable;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

/**
 * 日历
 * 
 * @ClassName: CalendarWrapper
 * @Description: CalendarWrapper
 * @author xkzhangsan
 * @date 2020年03月18日
 */
public class CalendarWrapper implements Serializable{
    
    private static final long serialVersionUID = 1L;
    
    private List<YearWrapper> years;
    
    private Map<String, DayWrapper> dayMap = new ConcurrentHashMap<String, DayWrapper>();
    
    public CalendarWrapper() {
        super();
    }
    
    public CalendarWrapper(List<YearWrapper> years, Map<String, DayWrapper> dayMap) {
        super();
        this.years = years;
        this.dayMap = dayMap;
    }

    public CalendarWrapper(List<YearWrapper> years) {
        super();
        this.years = years;
    }

    public List<YearWrapper> getYears() {
        return years;
    }

    public void setYears(List<YearWrapper> years) {
        this.years = years;
    }

    public Map<String, DayWrapper> getDayMap() {
        return dayMap;
    }

    public void setDayMap(Map<String, DayWrapper> dayMap) {
        this.dayMap = dayMap;
    }
}

 

1.2 Calendar Year category YearWrapper

package com.xkzhangsan.time.calendar;

import java.io.Serializable;
import java.util.List;

import com.xkzhangsan.time.calculator.DateTimeCalculatorUtil;

/**
 * 年
 * 
 * @ClassName: YearWrapper
 * @Description: YearWrapper
 * @author xkzhangsan
 * @date 2020年03月18日
 */
public class YearWrapper implements Serializable{

    private static final long serialVersionUID = 1L;
    
    private int year;
    
    private List<MonthWrapper> months;
    
    private boolean isLeapYear;

    public YearWrapper(int year, List<MonthWrapper> months) {
        super();
        this.year = year; 
        this.months = months;
        this.isLeapYear = DateTimeCalculatorUtil.isLeapYear(year);
    }


    public int getYear() {
        return year;
    }

    public void setYear(int year) {
        this.year = year;
    }

    public List<MonthWrapper> getMonths() {
        return months;
    }
    
    public void setMonths(List<MonthWrapper> months) {
        this.months = months;
    }
    
    public boolean isLeapYear() {
        return isLeapYear;
    }

    public void setLeapYear(boolean isLeapYear) {
        this.isLeapYear = isLeapYear;
    }
}

 

1.3 calendar month class MonthWrapper

package com.xkzhangsan.time.calendar;

import java.io.Serializable;
import java.util.List;

/**
 * 月
 * 
 * @ClassName: MonthWrapper
 * @Description: MonthWrapper
 * @author xkzhangsan
 * @date 2020年03月18日
 */
public class MonthWrapper implements Serializable{

    private static final long serialVersionUID = 1L;
    
    private int month;
    
    private List<DayWrapper> days;
    
    public MonthWrapper(int month, List<DayWrapper> days) {
        super();
        this.month = month;
        this.days = days;
    }

    public int getMonth() {
        return month;
    }

    public void setMonth(int month) {
        this.month = month;
    }
    
    public List<DayWrapper> getDays() {
        return days;
    }
    
    public void setDays(List<DayWrapper> days) {
        this.days = days;
    }
}

 

1.4 calendar days class DayWrapper

package com.xkzhangsan.time.calendar;

import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.Date;

import com.xkzhangsan.time.calculator.DateTimeCalculatorUtil;
import com.xkzhangsan.time.constants.Constant;
import com.xkzhangsan.time.converter.DateTimeConverterUtil;
import com.xkzhangsan.time.formatter.DateTimeFormatterUtil;

/**
 * 日
 * 
 * @ClassName: DayWrapper
 * @Description: DayWrapper
 * @author xkzhangsan
 * @date 2020年03月18日
 */
public class DayWrapper implements Serializable{

    private static final long serialVersionUID = 1L;

    private Date date;
    
    private LocalDateTime localDateTime;
    
    private String dateStr;
    
    private int day;
    
    private String weekStr;
    
    private Object obj;

    public DayWrapper(LocalDateTime localDateTime) {
        this(localDateTime, null);
    }

    public DayWrapper(LocalDateTime localDateTime, Object obj) {
        super();
        this.localDateTime = localDateTime;
        this.date = DateTimeConverterUtil.toDate(localDateTime);
        this.dateStr = DateTimeFormatterUtil.formatToDateStr(localDateTime);
        this.day = localDateTime.getDayOfMonth();
        if(Constant.getInstance().isChinese()){
            this.weekStr = DateTimeCalculatorUtil.getDayOfWeekCn(localDateTime);
        }else{
            this.weekStr = DateTimeCalculatorUtil.getDayOfWeekEnLong(localDateTime);
        }
        this.obj = obj;
    }

    public Date getDate() {
        return date;
    }

    public void setDate(Date date) {
        this.date = date;
    }

    public LocalDateTime getLocalDateTime() {
        return localDateTime;
    }

    public void setLocalDateTime(LocalDateTime localDateTime) {
        this.localDateTime = localDateTime;
    }

    public Object getObj() {
        return obj;
    }

    public void setObj(Object obj) {
        this.obj = obj;
    }

    public String getDateStr() {
        return dateStr;
    }

    public void setDateStr(String dateStr) {
        this.dateStr = dateStr;
    }

    public int getDay() {
        return day;
    }

    public void setDay(int day) {
        this.day = day;
    }

    public String getWeekStr() {
        return weekStr;
    }

    public void setWeekStr(String weekStr) {
        this.weekStr = weekStr;
    }

}

 

1.5 Calendar Tools CalendarUtil

package com.xkzhangsan.time.calendar;

import java.time.LocalDateTime;
import java.time.YearMonth;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

import com.xkzhangsan.time.calculator.DateTimeCalculatorUtil;
import com.xkzhangsan.time.formatter.DateTimeFormatterUtil;

/**
 * 日历工具类
 * 
 * @ClassName: CalendarUtil
 * @Description: CalendarUtil
 * @author xkzhangsan
 * @date 2020年03月18日
 */
public class CalendarUtil {

    private CalendarUtil() {
    }

    /**
     * 生成指定年月的日历
     * @param year
     * @param month
     * @return
     */
    public static CalendarWrapper generateCalendar(int year, int month){
        CalendarWrapper calendarWrapper = new CalendarWrapper();
        Map<String, DayWrapper> dayMap = new ConcurrentHashMap<String, DayWrapper>();
        List<LocalDateTime> localDateTimeList = DateTimeCalculatorUtil.getLocalDateTimeList(YearMonth.of(year, month));
        if(localDateTimeList == null || localDateTimeList.isEmpty()){
            return calendarWrapper;
        }
        List<DayWrapper> dayWrapperList = new ArrayList<>();
        localDateTimeList.stream().forEach(localDateTime->{
            DayWrapper dayWrapper = new DayWrapper(localDateTime);
            dayWrapperList.add(dayWrapper);
            dayMap.put(DateTimeFormatterUtil.formatToDateStr(localDateTime), dayWrapper);
        });
        
        MonthWrapper monthWrapper = new MonthWrapper(month, dayWrapperList);
        List<MonthWrapper> monthWrapperList = new ArrayList<>();
        monthWrapperList.add(monthWrapper);
        YearWrapper yearWrapper = new YearWrapper(year, monthWrapperList);
        
        List<YearWrapper> yearWrapperList = new ArrayList<>();
        yearWrapperList.add(yearWrapper);
        
        calendarWrapper = new CalendarWrapper(yearWrapperList, dayMap);
        return calendarWrapper;
    }
    
    /**
     * 生成指定年的日历
     * @param year
     * @return
     */
    public static CalendarWrapper generateCalendar(int year){
        CalendarWrapper calendarWrapper = new CalendarWrapper();
        Map<String, DayWrapper> dayMap = new ConcurrentHashMap<String, DayWrapper>();
        List<MonthWrapper> monthWrapperList = new ArrayList<>();
        for(int i=1; i<=12; i++){
            List<LocalDateTime> localDateTimeList = DateTimeCalculatorUtil.getLocalDateTimeList(YearMonth.of(year, i));
            if(localDateTimeList == null || localDateTimeList.isEmpty()){
                continue;
            }
            List<DayWrapper> dayWrapperList = new ArrayList<>();
            localDateTimeList.stream().forEach(localDateTime->{
                DayWrapper dayWrapper = new DayWrapper(localDateTime);
                dayWrapperList.add(dayWrapper);
                dayMap.put(DateTimeFormatterUtil.formatToDateStr(localDateTime), dayWrapper);
            });
            
            MonthWrapper monthWrapper = new MonthWrapper(i, dayWrapperList);
            monthWrapperList.add(monthWrapper);
        }
        
        List<YearWrapper> yearWrapperList = new ArrayList<>();
        YearWrapper yearWrapper = new YearWrapper(year, monthWrapperList);
        yearWrapperList.add(yearWrapper);
        calendarWrapper = new CalendarWrapper(yearWrapperList, dayMap);
        return calendarWrapper;
    }
}

 

2. Use a calendar application

Test code:

    @Test
     public  void calendarTest () {
         // Get 2020 Calendar 
        CalendarWrapper calendarWrapper = CalendarUtil.generateCalendar (2020 );
         // output of 
        System.out.println (. CalendarWrapper.getYears () GET (0 ) .getYear ());
         // output in January 
        System.out.println (calendarWrapper.getYears () GET (0) .getMonths () GET (0.. ) .getMonth ());
         // output 1 
        System.out.println (calendarWrapper.getYears .. () .get (0) .getMonths () GET (0) .getDays () GET (0 ) .getDay ());
         // output format 1 date
        System.out.println (.. CalendarWrapper.getYears () GET (0) .getMonths () GET (0) .getDays () GET (0. ) .GetDateStr ());
         // output 1 week 
        System.out. the println (... calendarWrapper.getYears () GET (0) .getMonths () GET (0) .getDays () GET (0 ) .getWeekStr ());
         // the output data value 1 
        System.out.println ( .. calendarWrapper.getYears () GET (0) .getMonths () GET (0) .getDays () GET (0. ) .getObj ()); 
        
        // Get days specified date, and day of the current value setting data 
        DayWrapper = calendarWrapper.getDayMap dayW () GET ( "2020-03-15." );
         IF (dayW =! null ) { 
            dayW.setObj ( "2020-03-15 Hello!" ); 
        } 
        
        //Get the specified date data value day 
        System.out.println (calendarWrapper.getDayMap () GET ( "2020-03-15." ) .GetObj ()); 
        . System.out.println (calendarWrapper.getYears () GET ( .. 0) .getMonths () GET (2) .getDays () GET (14 ) .getObj ()); 
    }

 

Output:

2020 
1 
1 
2020-01-01 
Wednesday 
null 
the Hello 2020-03-15! 
The Hello 2020-03-15!

 

Welcome to ask questions and suggestions!

 

Source address: https://github.com/xkzhangsan/xk-time

 

Guess you like

Origin www.cnblogs.com/xkzhangsanx/p/12535870.html