Java日期时间API系列27-----Jdk8中java.time包中的新的日期时间API类,使用xk-time工具类创建日历应用。
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java日期时间API系列27-----Jdk8中java.time包中的新的日期时间API类,使用xk-time工具类创建日历应用。,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含8975字,纯文字阅读大概需要13分钟。
内容图文
1.日历相关类
1.1 日历类 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{ privatestaticfinallong 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; } publicvoid setYears(List<YearWrapper> years) { this.years = years; } public Map<String, DayWrapper> getDayMap() { return dayMap; } publicvoid setDayMap(Map<String, DayWrapper> dayMap) { this.dayMap = dayMap; } }
1.2 日历年类 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{ privatestaticfinallong serialVersionUID = 1L; privateint year; private List<MonthWrapper> months; privateboolean isLeapYear; public YearWrapper(int year, List<MonthWrapper> months) { super(); this.year = year; this.months = months; this.isLeapYear = DateTimeCalculatorUtil.isLeapYear(year); } publicint getYear() { return year; } publicvoid setYear(int year) { this.year = year; } public List<MonthWrapper> getMonths() { return months; } publicvoid setMonths(List<MonthWrapper> months) { this.months = months; } publicboolean isLeapYear() { return isLeapYear; } publicvoid setLeapYear(boolean isLeapYear) { this.isLeapYear = isLeapYear; } }
1.3 日历月类 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{ privatestaticfinallong serialVersionUID = 1L; privateint month; private List<DayWrapper> days; public MonthWrapper(int month, List<DayWrapper> days) { super(); this.month = month; this.days = days; } publicint getMonth() { return month; } publicvoid setMonth(int month) { this.month = month; } public List<DayWrapper> getDays() { return days; } publicvoid setDays(List<DayWrapper> days) { this.days = days; } }
1.4 日历日类 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{ privatestaticfinallong serialVersionUID = 1L; private Date date; private LocalDateTime localDateTime; private String dateStr; privateint 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; } publicvoid setDate(Date date) { this.date = date; } public LocalDateTime getLocalDateTime() { return localDateTime; } publicvoid setLocalDateTime(LocalDateTime localDateTime) { this.localDateTime = localDateTime; } public Object getObj() { return obj; } publicvoid setObj(Object obj) { this.obj = obj; } public String getDateStr() { return dateStr; } publicvoid setDateStr(String dateStr) { this.dateStr = dateStr; } publicint getDay() { return day; } publicvoid setDay(int day) { this.day = day; } public String getWeekStr() { return weekStr; } publicvoid setWeekStr(String weekStr) { this.weekStr = weekStr; } }
1.5 日历工具类 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*/publicstatic 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.日历应用使用
测试代码:
@Test public void calendarTest(){ // 获取2020年日历 CalendarWrapper calendarWrapper = CalendarUtil.generateCalendar(2020); //输出年 System.out.println(calendarWrapper.getYears().get(0).getYear()); //输出1月 System.out.println(calendarWrapper.getYears().get(0).getMonths().get(0).getMonth()); //输出1日 System.out.println(calendarWrapper.getYears().get(0).getMonths().get(0).getDays().get(0).getDay()); //输出1日日期格式化 System.out.println(calendarWrapper.getYears().get(0).getMonths().get(0).getDays().get(0).getDateStr()); //输出1日星期 System.out.println(calendarWrapper.getYears().get(0).getMonths().get(0).getDays().get(0).getWeekStr()); //输出1日的数据值 System.out.println(calendarWrapper.getYears().get(0).getMonths().get(0).getDays().get(0).getObj()); //获取指定日期的天,并对当前天设置数据值 DayWrapper dayW = calendarWrapper.getDayMap().get("2020-03-15"); if(dayW != null){ dayW.setObj("hello 2020-03-15!"); } //获取指定日期的天的数据值 System.out.println(calendarWrapper.getDayMap().get("2020-03-15").getObj()); System.out.println(calendarWrapper.getYears().get(0).getMonths().get(2).getDays().get(14).getObj()); }
输出:
2020 1 1 2020-01-01 星期三 null hello 2020-03-15! hello 2020-03-15!
欢迎提问题和建议!
源代码地址:https://github.com/xkzhangsan/xk-time
原文:https://www.cnblogs.com/xkzhangsanx/p/12535870.html
内容总结
以上是互联网集市为您收集整理的Java日期时间API系列27-----Jdk8中java.time包中的新的日期时间API类,使用xk-time工具类创建日历应用。全部内容,希望文章能够帮你解决Java日期时间API系列27-----Jdk8中java.time包中的新的日期时间API类,使用xk-time工具类创建日历应用。所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。