1. package com.etc.util;
  2.  
  3. import java.util.Calendar;
  4. import java.util.Scanner;
  5.  
  6. public class Calendar2 {
  7.  
  8. public static void main(String[] args) {
  9. // 创建扫描器
  10. Scanner sc = new Scanner(System.in);
  11. // 输入年份
  12. System.out.println("请输入指定年份:");
  13. int year = sc.nextInt();
  14. // 输入月份
  15. System.out.println("请输入指定月份:");
  16. int month = sc.nextInt();
  17. // 输入天数
  18. System.out.println("请输入指定天数:");
  19. int day = sc.nextInt();
  20.  
  21. // 在控制台输出周期数
  22. System.out.println("日\t一\t二\t三\t四\t五\t六");
  23.  
  24. // 创建日历Calendar变量对象
  25. Calendar cal = Calendar.getInstance();
  26. // 给Calendar对象设置年月日
  27. cal.set(Calendar.YEAR, year);
  28. cal.set(Calendar.MONTH, month - 1);
  29. // cal.set(Calendar.DATE,day);
  30.  
  31. // 将天数设置为第一天
  32. cal.set(Calendar.DATE, 1);
  33.  
  34. // 指定月的第一天是星期几
  35. int i = cal.get(Calendar.DAY_OF_WEEK);
  36.  
  37. int weekday = 0;// 指定月的第一天前面有多少个空格
  38. switch (i) {
  39. case 1:
  40. weekday = 0;
  41. break;
  42. case 2:
  43. weekday = 1;
  44. break;
  45. case 3:
  46. weekday = 2;
  47. break;
  48. case 4:
  49. weekday = 3;
  50. break;
  51. case 5:
  52. weekday = 4;
  53. break;
  54. case 6:
  55. weekday = 5;
  56. break;
  57. case 7:
  58. weekday = 6;
  59. break;
  60. }
  61.  
  62. // 打印输出指定月第一天的前面几个空格
  63. for (int j = 0; j < weekday; j++) {
  64. System.out.print("\t");
  65. }
  66.  
  67. int days = 1;
  68. // 从指定月的第一天开始打印输出
  69. for (int j = 0; j < 7 - weekday; j++) {
  70. System.out.print(days + "\t");
  71. days++;
  72. }
  73.  
  74. int actualMaximumDate = cal.getActualMaximum(Calendar.DATE);//获取本月的实际最大天数
  75. cal.set(Calendar.DATE,actualMaximumDate);//设置本月的天数是当前月的实际最大天数
  76. int week_month=cal.get(Calendar.WEEK_OF_MONTH);//返回的是当前天数是本月第几周
  77.  
  78. for(int j=0;j<week_month;j++){//指定月有多少周,就打印多少行
  79. System.out.println();//每输出打印7天就换一行
  80. for(int k=0;k<7;k++){//依次将周日到周六的对应的天数打印出来
  81. if(days>actualMaximumDate){//若自动增加的天数大于实际天数,循环终止
  82. return;
  83. }
  84. if(days==day){//若指定的天数与当前自动增加的天数一样,标识出来打印
  85. System.out.print("*"+days+"\t");
  86. }else{//若指定的天数与当前自动增加的天数不一样,正常打印
  87. System.out.print(days+"\t");
  88. }
  89. days++;
  90. }
  91. }
  92.  
  93. }
  94. }

  

通过学习Date和Calendar时写的日历的更多相关文章

  1. java基础1.5版后新特性 自动装箱拆箱 Date SimpleDateFormat Calendar.getInstance()获得一个日历对象 抽象不要生成对象 get set add System.arrayCopy()用于集合等的扩容

    8种基本数据类型的8种包装类 byte Byte short Short int Integer long Long float Float double Double char Character ...

  2. 学习java窗口基本操作时无聊写的

    学习java窗口基本操作时无聊写的 就当记录 代码如下: package day08; import java.awt.BorderLayout;import java.awt.Color;impor ...

  3. 第28天学习打卡(Date和Calendar类 基本类型的包装类 集合 增强for循环 )

    Date和Calendar类 简介 日期和日历类,用于操作日期相关信息. 构造方法 Date(): 构造一个日期对象,当前系统时间,精确到毫秒. Date(long): 构造一个日期对象,时间为自&q ...

  4. JAVA之旅(二十三)——System,RunTime,Date,Calendar,Math的数学运算

    JAVA之旅(二十三)--System,RunTime,Date,Calendar,Math的数学运算 map实在是太难写了,整理得我都晕都转向了,以后看来需要开一个专题来讲这个了,现在我们来时来学习 ...

  5. java时间类Date、Calendar及用法

    对于时间类,这篇主要说明各种现实情况下如何取值,怎么定向取值,得到自己想要的时间参数.在java中时间类主要有Date.Calendar,暂时只介绍 java.util.*下的时间类,对于java.s ...

  6. java日期类型转换总结date timestamp calendar string

    用Timestamp来记录日期时间还是很方便的,但有时候显示的时候是不需要小数位后面的毫秒的,这样就需要在转换为String时重新定义格式.         Timestamp转化为String: S ...

  7. Java:Date、Calendar、Timestamp的使用

    一.Java.util.Date 该对象包含了年月日时分秒信息.具体使用如下代码: //String 转换为Date private static void dateDemo() throws Par ...

  8. Java:Date、Calendar、Timestamp的区别、相互转换与使用【转载】

    1 Java.util.Date 包含年.月.日.时.分.秒信息 包含年.月.日信息. 继承自java.util.Date.在数据库相关操作中使用,如rs.getDate,ps.setDate等.rs ...

  9. java日期和时间Date、Calendar、SimpleDateFormat

    1       时间和日期 1.1      日期类Date和格式化SimpleDateFormat 日期使用过程中需要将日期Date对象转化为字符串,或者将字符串形式的日期转化为日期Date对象.可 ...

随机推荐

  1. json和pickle的序列化

    PICKle模块:

  2. C++ Primer(第4版)-学习笔记-第1部分:基本语言

    第1章  快速入门 每个C++程序都包含一个或多个函数,而且必须有一个命名为main. main函数是唯一被操作系统显式调用的函数,main函数的返回值必须是int或者void(无返回值) 函数体是函 ...

  3. jQuery练习:表单模态框

    代码:基于事件冒泡原理和事件委托 <!DOCTYPE html> <html lang="zh-cn"> <head> <meta cha ...

  4. 《AlwaysRun!》第八次团队作业:Alpha冲刺 第二天

    项目 内容 这个作业属于哪个课程  老师链接 这个作业的要求在哪里  实验十二 团队作业8:软件测试与Alpha冲刺 团队名称  Always Run! 作业学习目标 (1)掌握软件测试基础技术. ( ...

  5. 暑假集训D15总结

    考试 日常爆炸= = T1数据背锅,回天乏力 推了两个小时的T2竟然莫名RE,我也是服了 T3考试时就没读懂题,做个鬼啊 今天一直在写某奇怪的技术贴,竟然没有写题解(手动滑稽) 希望明天不要乱炸吧 博 ...

  6. Linux中安装MongoDB出现的问题记录

    mongoDB安装完成后,运行sudo service mongod start 查看程序状态:ps ajx | grep mongod   ,启动失败 查看失败信息提示,终端命令:tail -f / ...

  7. HTML5:去除IE10中输入框和密码框的X按钮和小眼睛

    在IE10和之后的IE版本中,当在输入框和密码框中输入的时候,后面会自动出现X按钮和小眼睛,如下图所示:  令人苦恼的是,这个效果只有IE才有,其它浏览器是没有这个功能的.为了统一,我们就需要去掉这个 ...

  8. [RxJS] AsyncSubject and ReplaySubject - Learn the Differences

    We can use Subject as Observable and Observer: // Subject should be only used to emit value for priv ...

  9. 使用Linq 查询数据 构建对象 select new{}

    linq 查询数据 /// <summary> /// 汽车品牌及车型 /// </summary> /// <returns></returns> p ...

  10. SolrCloud 分布式集群部署步骤

    https://segmentfault.com/a/1190000000595712 SolrCloud 分布式集群部署步骤 solr solrcloud zookeeper apache-tomc ...