关于对日期的去重复的总结

之前在项目中碰到一个功能:根据年/月/日三种不同的风格来显示照片.
怎么获取照片以及获得照片时间就先不写了,本文重点是记录怎么拿时间进行分类处理.
之前想尽各种办法,通过字符串拼接比对啊(实在太low了,效率也渣)、
通过date.getTime()用long来算啊.是可以,第一个是算法很繁琐,第二是关于毫秒的计算也是比较恶心人.
最后选择了使用calendar,整个人都起飞了.直接上代码吧.
 
/***
 * @param entityList 照片的实体数组
 */
private static List<Calendar> getAccurateTimeData(List<PhotoEntity> entityList, int type) {
    List<Calendar> calendars = new ArrayList<>();
    for (int i = 0; i < entityList.size(); i++) {
        if (i == 0) {
            calendars.add(entityList.get(i).calendar);
            continue;
        }
        switch (type) {
            case DAY_TYPE:
                if (entityList.get(i).calendar.get(Calendar.YEAR) != entityList.get(i - 1).calendar.get(Calendar.YEAR)
                        || entityList.get(i).calendar.get(Calendar.DAY_OF_YEAR) != entityList.get(i - 1).calendar.get(Calendar.DAY_OF_YEAR)) {
                    calendars.add(entityList.get(i).calendar);
                }
                break;
            case MONTH_TYPE:
                if (entityList.get(i).calendar.get(Calendar.YEAR) != entityList.get(i - 1).calendar.get(Calendar.YEAR)
                       || entityList.get(i).calendar.get(Calendar.DAY_OF_YEAR) != entityList.get(i - 1).calendar.get(Calendar.MONTH)) {
                    calendars.add(entityList.get(i).calendar);
                }
                calendars.add(entityList.get(i).calendar);
                break;
            case YEAR_TYPE:
                if (entityList.get(i).calendar.get(Calendar.YEAR) != entityList.get(i - 1).calendar.get(Calendar.YEAR)) {
                    calendars.add(entityList.get(i).calendar);
                }
                calendars.add(entityList.get(i).calendar);
                break;
        }
    }
    return calendars;
}
 
以上代码可以看到.calendar能够直接通过以及set好的Time数据来提取年月日的信息.
只需要在传数据到entity里的时候传一个calendar并且将其setTime就好.之后对于照片的时间控制就都可以通过从entity里面拿calendar了.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值