输入一个日期,在控制台输出日历

清疚 2023-06-29 02:24 83阅读 0赞

演示代码

Calendar比较难理解的误区:可以看这篇文章->Calendar最大最难理解的误区

  1. /** * */
  2. package com.liangrui.javebase;
  3. import java.text.DateFormat;
  4. import java.text.ParseException;
  5. import java.text.SimpleDateFormat;
  6. import java.util.Calendar;
  7. import java.util.Date;
  8. import java.util.GregorianCalendar;
  9. import java.util.Scanner;
  10. /** * @author liangrui * @date 2020年1月10日 上午12:28:17 * @version 1.0.0 * @description 输入一个日期,在控制台输出日历 */
  11. public class DateToCalendar {
  12. public static void main(String[] args) throws ParseException {
  13. System.out.println("请输入日期(格式:2020-9-10):");
  14. Scanner scanner=new Scanner(System.in);
  15. //输入字符串格式 的日期
  16. String dateString=scanner.nextLine();
  17. DateFormat dateFormat=new SimpleDateFormat("yyyy-MM-dd");
  18. //将字符串格式日期转换成日期格式
  19. Date date=dateFormat.parse(dateString);
  20. //创建日历
  21. Calendar calendar=new GregorianCalendar();
  22. //将日期加入日历
  23. calendar.setTime(date);
  24. //获取输入日期在该月的天数
  25. int day=calendar.get(Calendar.DAY_OF_MONTH);
  26. //获取输入日期月的总天数
  27. int days=calendar.getActualMaximum(Calendar.DATE);
  28. //输出星期
  29. System.out.println("日\t一\t二\t三\t四\t五\t六");
  30. //设置当前天为这个月的1号
  31. calendar.set(Calendar.DAY_OF_MONTH, 1);
  32. //查看输入日期为星期几,从而遍历输出日历1号前面的空白
  33. for (int i = 0; i < calendar.get(Calendar.DAY_OF_WEEK)-1; i++) {
  34. System.out.print("\t");
  35. }
  36. //遍历月份,输出日历
  37. for (int i = 1; i <= days; i++) {
  38. //如果遍历的日子为输入的日子
  39. if (day==calendar.get(Calendar.DAY_OF_MONTH)) {
  40. System.out.print(calendar.get(Calendar.DAY_OF_MONTH)+"*\t");
  41. }else {
  42. System.out.print(calendar.get(Calendar.DAY_OF_MONTH)+"\t");
  43. }
  44. //到达周六换行
  45. if (calendar.get(Calendar.DAY_OF_WEEK)==Calendar.SATURDAY) {
  46. System.out.println();
  47. }
  48. //日期+1天
  49. calendar.add(Calendar.DAY_OF_MONTH, 1);
  50. }
  51. }
  52. }

运行结果:

在这里插入图片描述

和电脑日历显示是一模一样的

发表评论

表情:
评论列表 (有 0 条评论,83人围观)

还没有评论,来说两句吧...

相关阅读