赞
踩
日期选择需求,展示年月和当月所有日期的同时,能够动态切换日期,同时今天要特别显示
页面元素主要包括,年 月 一个月的天和天对应的星期名
用户操作交互时,
首次进入需要获取当前日期的 年 月 和本月的全部天和星期
点击年月的上下箭头,需要月加减,遇到1月减或者12月加时,需要年份进行增减,同时 月份变化,也需要获取变化后的月天数和对应的星期名 并刷新
特殊需求:注意匹配今天,周显示为今天,同时本日的字变色,加圆背景
获取今天的日期信息
- 获取今日的日期信息
- Calendar calendar = Calendar.getInstance();
获取上月字符串
- //传入保存的Calendar calendar对象
- public void getLastMouth(Calendar calendar){
- DateFormat df = new SimpleDateFormat("YYYY/MM");
- calendar.add(Calendar.MONTH, -1);
- date = (Date) calendar.getTime();
- String format = df.format(date);
- System.out.println(format);
- }
获取下月字符串
- //传入保存的Calendar calendar对象
- public void getNextMouth(Calendar calendar){
- DateFormat df = new SimpleDateFormat("YYYY/MM");
- calendar.add(Calendar.MONTH, 1);
- date = (Date) calendar.getTime();
- String format = df.format(date);
- System.out.println(format);
- }
获取对应月天数
- /**
- * 根据年 月 获取对应的月份 天数
- 用保存的calendar获取
- calendar.get(Calendar.YEAR);
- calendar.get(Calendar.MOUTH);
- */
- public 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;
- }
-
获取当天的周数
- /**
- * 获取当天的周数
- *
- * @param date
- * @return
- */
- public static String getDaysOfWeek(Date date) {
- Calendar calendar = Calendar.getInstance();
- calendar.setTime(date);
- int i = calendar.get(Calendar.DAY_OF_WEEK);
- switch (i) {
- case 1:
- return "周天" ;
- case 2:
- return “周一”;
- case 3:
- return “周二”;
- case 4:
- return “周三”;
- case 5:
- return “周四”;
- case 6:
- return “周五”;
- case 7:
- return “周六”;
- default:
- return "";
- }
- }
获取对应天数和周数的逻辑
- Canlendar calendar = Canlendar.getInstance();
- int monthDays=getDaysByYearMonth(calendar.get(Calendar.YEAR),calendar.get(Calendar.MOUTH));
- for (int i = 0; i < monthDays; i++) {
- instance.set(year,month,i+1);
- dateInfoList.add( new DateInfoBean(instance.get(Calendar.YEAR),
- instance.get(Calendar.MONTH),
- instance.get(Calendar.DAY_OF_MONTH),
-
- DateUtil.getDaysOfWeek(instance.get(Calendar.DAY_OF_WEEK))));
- }
-
- 这样就能获得当月所有的日期和对应日期的周名称
经过一番分析总结,发现功能并不复杂,主要在于日期的不断交换,ui上很简单,图标按钮和列表组合一下,及时刷新日期数据即可,相信大家也能很快掌握。
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。