Java如何快速组装数据_JAVA组装一个日历数据

packagecom.dawn.question.api.wechat.dao;importcom.fasterxml.jackson.core.JsonGenerator;importcom.fasterxml.jackson.databind.MappingJsonFactory;importjava.io.StringWriter;import java.util.*;/*** Author: cg

* Date: 2020/7/1 17:24

* Content:*/

public classSignDataTableModel {private static String[] parsePatterns = {"yyyy-MM-dd","yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd HH:mm", "yyyy-MM", "yyyy/MM/dd","yyyy/MM/dd HH:mm:ss", "yyyy/MM/dd HH:mm", "yyyy/MM", "yyyy.MM.dd","yyyy.MM.dd HH:mm:ss", "yyyy.MM.dd HH:mm", "yyyy.MM"};//第几天

privateInteger day;//是否签到(1:已签到,0:未签到)

privateInteger isSign;//是否是今天(1:是,0:否)

privateInteger isToday;//月份

privateInteger month;//月份字符串(month+"月")

privateString monthStr;publicDate parseDate(String str) {if (str == null) {return null;

}try{returnorg.apache.commons.lang.time.DateUtils.parseDate(str, parsePatterns);

}catch(java.text.ParseException e) {

e.printStackTrace();

}return null;

}publicInteger getWeekDayNumber(String dateStr) {

Date date=parseDate(dateStr);

Calendar calendar=Calendar.getInstance();if(date != null){

calendar.setTime(date);

}int w = calendar.get(Calendar.DAY_OF_WEEK) - 1;returnw;

}public Integer getMonthOneWeek(intdayNumber) {

Calendar cal=Calendar.getInstance();

cal.setTime(newDate());

String oneDay= cal.get(Calendar.YEAR) + "-" + (cal.get(Calendar.MONTH) + 1) + "-"+dayNumber+"";//1号日期

int index =getWeekDayNumber(oneDay);if(index==0){

index=7;

}returnindex;

}/*** 获取的当月最后一天是几号*/

publicInteger getMonthLastDay() {

Calendar cal=Calendar.getInstance();

cal.setTime(newDate());int year =cal.get(Calendar.YEAR);int month = cal.get(Calendar.MONTH)+1;

String beforeMonthLastStr= year+"-"+(month+1)+"-"+"01"; //上个月日期

cal.setTime(parseDate(beforeMonthLastStr));

cal.set(Calendar.DAY_OF_MONTH,0);returncal.get(Calendar.DAY_OF_MONTH);

}/*** 获取的当月最后一天是星期几*/

publicInteger getMonthLastWeekNumber() {

Calendar cal=Calendar.getInstance();

cal.setTime(newDate());int lastDay = getMonthLastDay();//本月最后一天是几号

String lastDayStr = cal.get(Calendar.YEAR) + "-" + (cal.get(Calendar.MONTH) + 1) + "-"+lastDay+"";//1号日期

int index =getWeekDayNumber(lastDayStr);if(index==0){

index=7;

}returnindex;

}/*** 获取的上月最后一天是几号*/

publicInteger getBeforeMonthLastDay() {

Calendar cal=Calendar.getInstance();int year =cal.get(Calendar.YEAR);int month = cal.get(Calendar.MONTH)+1;if (month==12){

month=0;

year=year+1;

}

String beforeMonthLastStr= year+"-"+(month)+"-"+"01"; //上个月日期

cal.setTime(parseDate(beforeMonthLastStr));

cal.set(Calendar.DAY_OF_MONTH,0);returncal.get(Calendar.DAY_OF_MONTH);

}publicString toJson(Object object) {

MappingJsonFactory f= newMappingJsonFactory();

StringWriter sw= newStringWriter();try{

JsonGenerator generator=f.createGenerator(sw);

generator.writeObject(object);

generator.close();

}catch(Exception e) {return "";

}returnsw.toString();

}public static voidmain(String[] args) {/*组装日历数据*/

//headMap(year:'2019', month:'四月', days:[dataMap(rowIndex:0,data:[]) ])

Map headMap = newHashMap();

Calendar cal=Calendar.getInstance();

headMap.put("year", cal.get(Calendar.YEAR));

headMap.put("month", (cal.get(Calendar.MONTH) + 1) + "月");

SignDataTableModel tableModel= newSignDataTableModel();

List monthDataList = new ArrayList<>();int monthOneWeek = tableModel.getMonthOneWeek(1);//本月1号是星期几(1-7)

int lastDay = tableModel.getMonthLastDay();//本月最后一天是几号

int monthLastWeek = tableModel.getMonthLastWeekNumber();//本月最后一天是星期几(1-7)

int beforeMonthLastDay = tableModel.getBeforeMonthLastDay();//上个月最后一天是几号

int beforeDay = beforeMonthLastDay-monthOneWeek+2;int nextDay = 1;int index = 1;int totalCount = lastDay+monthOneWeek-1+(7-monthLastWeek);//日历表总天数

int beforeMonth =cal.get(Calendar.MONTH);if(beforeMonth==0){

beforeMonth=12;

}int nextMonth = cal.get(Calendar.MONTH)+2;if(nextMonth==13){

nextMonth=1;

}for (int i=0;i

tableModel= newSignDataTableModel();

tableModel.setIsToday(0);

tableModel.setIsSign(0);if(beforeDay<=beforeMonthLastDay){

tableModel.setDay(beforeDay);

tableModel.setMonth(beforeMonth);

tableModel.setMonthStr(beforeMonth+"月");

beforeDay++;

}else{

tableModel.setDay(index);if (index==cal.get(Calendar.DATE)){

tableModel.setIsToday(1);

}

tableModel.setMonth(cal.get(Calendar.MONTH)+1);

tableModel.setMonthStr((cal.get(Calendar.MONTH)+1)+"月");

index++;

}if(index-1>lastDay && 7-monthLastWeek>0){

tableModel.setDay(nextDay);

tableModel.setMonth(nextMonth);

tableModel.setMonthStr(nextMonth+"月");

nextDay++;

}

monthDataList.add(tableModel);

}//日历表的签到数据

int toDay = monthDataList.get(0).getDay();int endDay = monthDataList.get(monthDataList.size()-1).getDay();int year =cal.get(Calendar.YEAR);int month = cal.get(Calendar.MONTH)+1;

String beforeMonthStr=beforeMonth+"";

String nextMonthStr=nextMonth+"";if(beforeMonth<10){

beforeMonthStr="0"+beforeMonthStr;

}if(nextMonth<10){

nextMonthStr="0"+nextMonthStr;

}

String monthStr= month+"";if(month<10){

monthStr="0"+monthStr;

}

String statTime= year+"-"+monthStr+"-"+toDay;

String endTime= year+"-"+monthStr+"-"+endDay;if(toDay>1){

statTime=year+"-"+beforeMonthStr+"-"+toDay;if(beforeMonth==12){

statTime=(year-1)+"-"+beforeMonthStr+"-"+toDay;

}

}if(endDay<=7){

endTime=year+"-"+nextMonthStr+"-0"+endDay;if(nextMonth==1){

endTime=(year+1)+"-"+nextMonthStr+"-0"+endDay;

}

}

List rowDataList = new ArrayList<>();

Map rowMap;

List rowMaps = newArrayList();int i=0;int rowNumber=0;for(SignDataTableModel signDataTableModel : monthDataList) {

i++;

rowDataList.add(signDataTableModel);if(i%7==0){

rowNumber++;

rowMap= newLinkedHashMap();

rowMap.put("rowIndex",rowNumber);

rowMap.put("data",rowDataList);

rowMaps.add(rowMap);

rowDataList= new ArrayList<>();

}

}

headMap.put("days",rowMaps);

System.out.println(tableModel.toJson(headMap));

}publicInteger getDay() {returnday;

}public voidsetDay(Integer day) {this.day =day;

}publicInteger getIsSign() {returnisSign;

}public voidsetIsSign(Integer isSign) {this.isSign =isSign;

}publicInteger getIsToday() {returnisToday;

}public voidsetIsToday(Integer isToday) {this.isToday =isToday;

}publicInteger getMonth() {returnmonth;

}public voidsetMonth(Integer month) {this.month =month;

}publicString getMonthStr() {returnmonthStr;

}public voidsetMonthStr(String monthStr) {this.monthStr =monthStr;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值