• 统计每天的数据 无数据也要显示日期程序解决方法


      最近项目中遇到分组查询数据,按日期显示,如果那个日期没有数据,也要把日期显示出来.

      有两个方案:1)在数据库建一个用于所有日期的表,然后让查询结果与之关联。

           2)在程序中填充。

    对于方案一的话,可以写定时任务或者存储过程将日期写入相应的日期表,注意这个日期表只是为了查询的时候,带出数据为空的数据中的日期。以空间换取时间(简单实现)

    方案二是:利用一次循环,将日期直接填充到list中,

      具体原理是:start比对原数组,如果有就添加到新数组,没有就填充空数据到新数组,直到结束

    package test;
    
    import java.util.Date;
    
    public class Dog {
        private    String name;
        private  Date birthday;
            
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public Date getBirthday() {
            return birthday;
        }
    
        public void setBirthday(Date birthday) {
            this.birthday = birthday;
        }
        
    
    }

    具体实现如下

    关键代码如下

    public static  List<Dog> addDayForNull(List<Dog> oldList,Date start,Date end){
            long n=getDateDay(start,end);
            ArrayList<Dog> newList=new ArrayList<Dog>();
            int num=oldList.size();
            int temp=0;
            for(int i=0;i<n;i++){
                if(temp < num){
                    //如果开始日期小于当前记录日期则增加空白数据
                    if(start.compareTo(oldList.get(temp).getBirthday()) < 0){
                    Dog dog=getNewDag(start);
                    newList.add(dog);
                }
                if(start.compareTo(oldList.get(temp).getBirthday()) == 0){//原数据加入
                    newList.add(oldList.get(temp));
                    temp++;
                }
                }else if(temp >= num && start.compareTo(end) <= 0){//加入空数据直到结束时间
                    Dog dog=getNewDag(start);
                    newList.add(dog);
                                
                }
                //开始时间向前加一天
                start=addDateOneDay(start);
                
            }
            
            return newList;
            
            


      

     
    public static Date addDateOneDay(Date date) {
            if (null == date) {
                return date;
            }
            Calendar c = Calendar.getInstance();
            c.setTime(date);   //设置当前日期
            c.add(Calendar.DATE, 1); //日期加1天
    //     c.add(Calendar.DATE, -1); //日期减1天
            date = c.getTime();
            return date;
        }
    学习的时间不一定要特定安排
  • 相关阅读:
    聚焦WCF行为的扩展
    软件设计经典书籍推荐
    善变者常新
    开发WCF/Silverlight须知
    面向对象设计讲义
    站立会议变形记
    敏捷开发思想之拥抱变化
    WCF 4.0中的WSDiscovery
    QCon日记
    创投“黑帮”,必须的
  • 原文地址:https://www.cnblogs.com/zhongzheng123/p/5230707.html
Copyright © 2020-2023  润新知