当前位置:   article > 正文

android日期选择:切换日期显示_单日 多日 手机端 切换

单日 多日 手机端 切换

问题:

日期选择需求,展示年月和当月所有日期的同时,能够动态切换日期,同时今天要特别显示

分析:

页面元素主要包括,年  月  一个月的天和天对应的星期名

用户操作交互时,

首次进入需要获取当前日期的 年 月 和本月的全部天和星期

点击年月的上下箭头,需要月加减,遇到1月减或者12月加时,需要年份进行增减,同时 月份变化,也需要获取变化后的月天数和对应的星期名 并刷新

特殊需求:注意匹配今天,周显示为今天,同时本日的字变色,加圆背景

解决:

获取今天的日期信息

  1. 获取今日的日期信息
  2. Calendar calendar = Calendar.getInstance();

获取上月字符串

  1. //传入保存的Calendar calendar对象
  2. public void getLastMouth(Calendar calendar){
  3. DateFormat df = new SimpleDateFormat("YYYY/MM");
  4. calendar.add(Calendar.MONTH, -1);
  5. date = (Date) calendar.getTime();
  6. String format = df.format(date);
  7. System.out.println(format);
  8. }

获取下月字符串

  1. //传入保存的Calendar calendar对象
  2. public void getNextMouth(Calendar calendar){
  3. DateFormat df = new SimpleDateFormat("YYYY/MM");
  4. calendar.add(Calendar.MONTH, 1);
  5. date = (Date) calendar.getTime();
  6. String format = df.format(date);
  7. System.out.println(format);
  8. }

获取对应月天数

  1.     /**
  2.      * 根据年 月 获取对应的月份 天数
  3. 用保存的calendar获取
  4. calendar.get(Calendar.YEAR);
  5. calendar.get(Calendar.MOUTH);
  6.      */
  7.     public static int getDaysByYearMonth(int year, int month) {
  8.         Calendar a = Calendar.getInstance();
  9.         a.set(Calendar.YEAR, year);
  10.         a.set(Calendar.MONTH, month - 1);
  11.         a.set(Calendar.DATE, 1);
  12.         a.roll(Calendar.DATE, -1);
  13.         int maxDate = a.get(Calendar.DATE);
  14.         return maxDate;
  15.     }

获取当天的周数

  1. /**
  2. * 获取当天的周数
  3. *
  4. * @param date
  5. * @return
  6. */
  7. public static String getDaysOfWeek(Date date) {
  8. Calendar calendar = Calendar.getInstance();
  9. calendar.setTime(date);
  10. int i = calendar.get(Calendar.DAY_OF_WEEK);
  11. switch (i) {
  12. case 1:
  13. return "周天" ;
  14. case 2:
  15. return “周一”;
  16. case 3:
  17. return “周二”;
  18. case 4:
  19. return “周三”;
  20. case 5:
  21. return “周四”;
  22. case 6:
  23. return “周五”;
  24. case 7:
  25. return “周六”;
  26. default:
  27. return "";
  28. }
  29. }

获取对应天数和周数的逻辑

  1. Canlendar calendar = Canlendar.getInstance();
  2. int monthDays=getDaysByYearMonth(calendar.get(Calendar.YEAR),calendar.get(Calendar.MOUTH));
  3. for (int i = 0; i < monthDays; i++) {
  4. instance.set(year,month,i+1);
  5. dateInfoList.add( new DateInfoBean(instance.get(Calendar.YEAR),
  6. instance.get(Calendar.MONTH),
  7. instance.get(Calendar.DAY_OF_MONTH),
  8. DateUtil.getDaysOfWeek(instance.get(Calendar.DAY_OF_WEEK))));
  9. }
  10. 这样就能获得当月所有的日期和对应日期的周名称

效果总结:

经过一番分析总结,发现功能并不复杂,主要在于日期的不断交换,ui上很简单,图标按钮和列表组合一下,及时刷新日期数据即可,相信大家也能很快掌握。

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/594081
推荐阅读
相关标签
  

闽ICP备14008679号