java統計指定年月下的每一天,並排序
需求:從資料庫查出List<Map<String,Object>>格式的資料。
比如:[{num=1, tm=05-04}, {num=1, tm=05-06},{num=1, tm=05-03}]
但是,需求是要查出指定的年月的所有天數,之前想從sql入手,無奈失敗,從java入手
拼資料。
public static void main(String[] args) throws ParseException { List<Map<String, Object>> list=new ArrayList<>(); Map<String,Object> mp1=new HashMap<>(); Map<String,Object> mp2=new HashMap<>(); Map<String,Object> mp3=new HashMap<>(); mp1.put("num", 10); mp1.put("tm", "02-10"); mp2.put("num", 10); mp2.put("tm", "02-18"); mp3.put("num", 10); mp3.put("tm", "02-01"); list.add(mp1); list.add(mp2); list.add(mp3); getData(2018,2,list); } /** * 構造整個月的資料,資料庫查不到預設為零,只要傳入年和月以及資料就可以返回按升序排好的整個月的資料 *2018年5月30日 *smy *@param year 指定年 *@param m 指定月 *@param mp 資料庫得到的資料 *@return */ public static List<Map<String, Object>> getData(int year, int month, List<Map<String, Object>> mp) { ArrayList<String> dayList = dayList( year, month);//指定月日期集合 if(mp.size()< getDaysByYearMonth(year,month)){ for(Map m:mp){ dayList.remove(m.get("tm"));//移除和mp(傳入的引數)中重複的資料,剩下的就是不同的記錄。 } } for(String str:dayList){//把兩個集合融為一體 HashMap<String, Object> tempMap = new HashMap<>(); tempMap.put("num", "0"); tempMap.put("tm", str); mp.add(tempMap); tempMap=null; } return listSort(mp);//把融為一體的集合排序得到最終結果 } /** * 獲取指定年月的天數集合[05-01,05-02,05-03,05-04......] *2018年5月30日 *smy *@param year *@param month *@return List集合的月日集合[05-01,05-02,05-03,05-04......] */ private static ArrayList<String> dayList(int year, int month) { Calendar cal = Calendar.getInstance(); cal.set(Calendar.YEAR, year);//設定年份,不設定年2月會有問題 cal.set(Calendar.MONTH, month-1);//設定月份 cal.set(Calendar.DAY_OF_MONTH, 1);// 從一號開始 ArrayList<String> arrayList = new ArrayList<>(); for (int i = 0; i < getDaysByYearMonth(year, month); i++, cal.add(Calendar.DATE, 1)) { SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); String df = simpleDateFormat.format(cal.getTime()); String substring=""; if(df!=null){ substring = df.substring(5, 10);//擷取月日比如05-03 } arrayList.add(substring); } return arrayList;//返回指定月的天數集合 } /** * 獲取year年的month月的天數 *2018年5月30日 *smy *@param year 年份 *@param month 月份 *@return int型別的天數總數30 */ private static int getDaysByYearMonth(int year, int month) { Calendar a = Calendar.getInstance(); a.set(Calendar.YEAR, year); //設定年 a.set(Calendar.MONTH, month - 1); //設定月 a.set(Calendar.DATE, 1); //設定天 a.roll(Calendar.DATE, -1); int maxDate = a.get(Calendar.DATE); return maxDate; //總天數 } /** * 對List<Map<String, Object>>資料集進行升序排序 *2018年5月30日 *smy *@param resultList *@return 返回List<Map<String, Object>>資料集 */ public static List<Map<String, Object>> listSort(List<Map<String, Object>> resultList) { // resultList是需要排序的list,其內放的是Map // 返回的結果集 Collections.sort(resultList, new Comparator<Map<String, Object>>() { public int compare(Map<String, Object> o1, Map<String, Object> o2) { // o1,o2是list中的Map,可以在其內取得值,按其排序,此例為升序,s1和s2是排序欄位值 Integer s1 = Integer.valueOf(((String) o1.get("tm")).replace("-", "")) ; Integer s2 = Integer.valueOf(((String) o2.get("tm")).replace("-", "")) ; if (s1 > s2) { return 1; } else { return -1; } } }); System.out.println(resultList); return resultList;//返回排序的結果 } //執行結果如下 [{num=10, tm=02-01}, {num=0, tm=02-02}, {num=0, tm=02-03}, {num=0, tm=02-04}, {num=0, tm=02-05}, {num=0, tm=02-06}, {num=0, tm=02-07}, {num=0, tm=02-08}, {num=0, tm=02-09}, {num=10, tm=02-10}, {num=0, tm=02-11}, {num=0, tm=02-12}, {num=0, tm=02-13}, {num=0, tm=02-14}, {num=0, tm=02-15}, {num=0, tm=02-16}, {num=0, tm=02-17}, {num=10, tm=02-18}, {num=0, tm=02-19}, {num=0, tm=02-20}, {num=0, tm=02-21}, {num=0, tm=02-22}, {num=0, tm=02-23}, {num=0, tm=02-24}, {num=0, tm=02-25}, {num=0, tm=02-26}, {num=0, tm=02-27}, {num=0, tm=02-28}]
相關推薦
java統計指定年月下的每一天,並排序
需求:從資料庫查出List<Map<String,Object>>格式的資料。比如:[{num=1, tm=05-04}, {num=1, tm=05-06},{num=1, tm=05-03}]但是,需求是要查出指定的年月的所有天數,之前想從sql入
python獲取指定日期範圍內的每一天,每個月,每季度
1.獲取所有天,返回一個列表: def getBetweenDay(begin_date): date_list = [] begin_date = datetime.datetim
如何使用oracle資料庫查詢指定時間內每一天的日期
oracle查詢語句(查詢在2018-02-01至2018-07-31時間段內的每一天日期)SELECT TO_CHAR(TO_DATE('2018-02-01', 'yyyy-MM-dd') + ROWNUM - 1,'yyyy-MM-dd') as daylistFRO
MySql 求一段時間範圍內的每一天,每一小時,每一分鐘
pda join 月份 nbsp 獲取 pan 關聯 orm now() 平常經常會求一段時間內的每一天統計數據,或者每一時點的統計數據。但是mysql本身是沒有直接獲取時點列表的函數或表。下面是自己用到的一些方法,利用臨時變量和一個已存在的比較多數據(這個需要根據實際情況
日誌必須開始寫了,記錄自己每一天,希望每天進步一點
自己的每一天都是無法再重新返回過的,當前的每一分一秒都應該有所痕跡。必須有所行動,治癒焦慮吧。一直想要開始寫的部落格就從今天開始吧,如果不做點什麼,你將永遠失去今天。今天繼續寫自己的APP專案,發現程式碼被我改亂了,沒辦法退回到昨天的程式碼了,想到git,必須得用了。之前已經
獲取視訊的每一幀,並儲存為.jpg圖片
#include<opencv2\opencv.hpp> #include <iostream> #include <stdio.h> #include<fstream> using namespace std; using names
java根據年月獲取當前月的每一天日期
public static List<String> getDayByMonth(int yearParam,int monthParam){ List list = new ArrayList(); Calendar aCalen
JAVA 日期 一個時間段總共幾周,每一天星期幾
static art system 指定 保留 當前時間 throws gre 測試 /** * 查詢一個時間段的總周數和查詢當前時間是第幾周 * @param start * @param end * @return *
js 獲取指定日期上一天及下一天,上一月及下一月
1、獲取指定日期上一天、下一天 function getNextDate(date,day) { var dd = new Date(date); dd.setDate(dd.getDate() + day); var y = dd.getFullYear(); var m
【老紫竹的專欄】享受Java的快樂每一天之我的大資料生活
專欄達人 授予成功建立個人部落格專欄
mysql 獲取某個時間段每一天、每一個小時的統計資料
轉載:https://blog.csdn.net/Crystalqy/article/details/79443155 獲取每一天的統計資料 做專案的時候需要統對專案日誌做分析,其中有一個需求是獲取某個給定的時間段內,每一天的日誌資料,比如說要獲取從2018-02-02
老紫竹的專欄(享受Java的快樂每一天之我的大資料生活)
跟老紫竹學Java 考慮再三,自己最熟悉的還是這麼多年使用Java在伺服器端和Web方面的程式設計經驗了。決定重新整理自己這麼多年的經驗,看看到底自己都會啥?考慮到實際情況,將採用虛擬專案的形式,根據專案的大小,從專案的分析設計到
java獲取一段日期中的每一天
Calendar c_begin = new GregorianCalendar(); Calendar c_end = new GregorianCalendar(); DateFormatSymbols dfs = new DateFormatSymb
mysql 獲取規定時間段內每一天的統計資料
按年統計 SELECT count(*), DATE_FORMAT(order_info.create_time, '%Y-%m-%d') AS count_by_date
統計每一天的使用者註冊數sql語句
SELECT count(*), DATE_FORMAT(FROM_UNIXTIME(ctime),'%m-%d') as time FROM zj_admin WHERE ctime BETWEEN unix_timestamp('2014-3-1') AND (unix_timestamp('20
Python2 獲取兩日期之間的每一天
日期 ftime 不定 獲取 class clas get pri eve import datetime def getEveryDay(begin_date,end_date): date_list = [] begin_date = datetime
計劃好工作的每一天
計劃一、工作學習的健康規劃。 1、每天至少2杯水,上午1杯,下午2杯。(如果加班也要加上1杯) 2、每工作學習一小時,放松下眼睛,走動下身體。 3、每天下班後至少保持定量的運動(0.5h)。 4、按時吃飯,保證充足的營養。 5、按時睡覺,保證充足的睡眠。二、有限時間,高效學習。
js獲取本月或指定月份的最後一天
undefine day nth true || defined turn 獲取 null 自定義方法,用於獲取本月或指定月份的最後一天,如果不傳參數,就是當前月: function getMonthFinalDay(year,month){ var day=‘‘;
java操作時間,將當前時間減一年,減一天,減一個月
strong note 計算 mon 項目 class comm settime cli 在Java中操作時間的時候,常常遇到求一段時間內的某些值,或者計算一段時間之間的天數 [java] view plain copy Date date =
java讀取指定package下的所有class
public als sta 功能 accept smo bstr 文件的 get JAVA如何掃描一個包下面的所有類,並加載到內存中去? spring中有一個<context:component-scan base-package="com.controller"