java 数字转换星期,Java中将数据转换为周月年数据

前言

在平常开发中总会碰到相应的数据转换,比如将查询的数据转换为周月年然后在前台以折线图的方式表现。

提示:以下是本篇文章正文内容,下面案例可供参考

一、转换步骤

1.VO类

import com.fasterxml.jackson.annotation.JsonFormat;

import lombok.AllArgsConstructor;

import lombok.Data;

import lombok.NoArgsConstructor;

import java.util.Date;

/**

* 用户来源渠道统计表

*/

@Data

@AllArgsConstructor

@NoArgsConstructor

public class StatUserRealnameVO {

private Integer id;

/**

* 统计日期(@JsonFormat:将Date转换成String 一般后台传值给前台时)

*/

@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")

private Date statTime;

/**

* 当日实名用户数量

*/

private Integer userRealnameCount;

/**

* 当日实名个人用户数量

*/

private Integer userPersionCount;

/**

* 当日实名企业用户数量

*/

private Integer userBusinessCount;

}

注意:可能有时间丢失的状况发生

2.转换为周数据

private List statUserChannelVOToWeekData(List voList) {

if (voList == null) {

return null;

}

HashMap map = new LinkedHashMap<>();

for (StatUserChannelVO r : voList) {

Date date = r.getStatTime();

Calendar calendar = Calendar.getInstance();

//先设置一周的第一天为周一,然后存入时间,取出每次时间为第几周并以其为key

calendar.setFirstDayOfWeek(Calendar.MONDAY);

calendar.setTime(date);

int key = calendar.get(Calendar.WEEK_OF_YEAR);

// 以key取出map中的值

StatUserChannelVO vo = map.get(key);

//如果值为空则存入,如果不为空则将相同key的值数据合并,累加数据

if (vo == null) {

vo = new StatUserChannelVO();

try {

PropertyUtils.copyProperties(vo, r);

} catch (Exception e) {

log.error("拷贝属性异常:{}", e.getMessage(), e);

return null;

}

//获得某周最后一天,因为默认不是周日

int year = calendar.get(Calendar.YEAR);

Date dateWeek = getLastDayOfWeek(year, key);

vo.setStatTime(dateWeek);

} else {

vo.setUnisoundCount(vo.getUnisoundCount() + r.getUnisoundCount());

vo.setSemCount(vo.getSemCount() + r.getSemCount());

vo.setOtherCount(vo.getOtherCount() + r.getOtherCount());

vo.setNullCount(vo.getNullCount() + r.getNullCount());

vo.setUserAllCount(vo.getUserAllCount() + r.getUserAllCount());

}

map.put(key, vo);

}

Collection values = map.values();

List sucvoList = new ArrayList<>(values);

return sucvoList;

}

/**

* 获得某周最后一天

*

* @param year

* @param week

* @return

*/

public static Date getLastDayOfWeek(int year, int week) {

Calendar cal = Calendar.getInstance();

//设置年份

cal.set(Calendar.YEAR, year);

//设置周

cal.set(Calendar.WEEK_OF_YEAR, week);

//设置该周第一天为星期一

cal.setFirstDayOfWeek(Calendar.MONDAY);

//设置最后一天是星期日

cal.set(Calendar.DAY_OF_WEEK, cal.getFirstDayOfWeek() + 6); // Sunday

//格式化日期

//SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

//String lastDayOfWeek = sdf.format(cal.getTime());

return cal.getTime();

}

2.转换为月数据

//其他上下大致一样只有在日期设置这里有些不同

Calendar calendar = Calendar.getInstance();

calendar.setTime(date);

//因为这个值的初始值是0,因此我们要用它来表示正确的月份时就需要加1。

int key = calendar.get(Calendar.MONTH) + 1;

2.转换为年数据

int key = calendar.get(Calendar.YEAR);

# 总结

以上就是今天要讲的内容,本文仅仅简单介绍了ava中将数据转换为周月年数据,更加复杂的数据转换并没有涉及。如果你感觉有用请点赞,如果感觉不错请收藏,如果有什么错误请在下方评论指正。我是老白,我们下期再见。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值