ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

习题集(2)-Java日期类应用

2021-06-08 21:04:38  阅读:297  来源: 互联网

标签:Java cl int 习题集 System 日期 import Calendar out


 

 //方法类,用于操作数据:

 1 package DateFormatClass;
 2 
 3 import java.text.ParseException;
 4 import java.text.SimpleDateFormat;
 5 import java.util.*;
 6 
 7 public class DateDao {
 8     /**
 9      * 计算间隔天数
10      * @param cl
11      * @return
12      */
13     public static int intervalNum(Calendar cl) throws ParseException {
14         //获取传入日期的Date对象
15         Date date = cl.getTime();
16         //调用方法,获取传入时间的格林威治时间
17         long big = date.getTime();
18         //创建日期格式化对象
19         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
20         //调用方法,设置一个默认的时间,并让他格式化
21         Date parse = sdf.parse("2020-02-02");
22         //计算默认日期的格林威治时间
23         long small = parse.getTime();
24         int intervalDay = (int)(big-small)/(1000*60*60*24);
25 
26         if((big-small)<0){
27             return -1;
28         }
29         return intervalDay;
30     }
31 }

//视图类:用于提醒用户输入,并将输入的值返回出去
 1 package DateFormatClass;
 2 
 3 import java.util.Scanner;
 4 
 5 public class Views {
 6     private static Scanner input = new Scanner(System.in);
 7     public int inputNum(int min,int max){
 8         System.out.println("请根据需求输入一个合法的数字");
 9         String s = input.nextLine();
10         int num = -1;
11         try{
12             num = Integer.parseInt(s);
13         }catch (NumberFormatException e){
14             System.out.println("你输入的不是数字,请重新输入");
15             inputNum(min,max);
16         }
17         if(num<min || num>max){
18             System.out.println("你输入的数字范围不对,请重新输入");
19             inputNum(min,max);
20         }
21         return num;
22     }
23 }

 

//这是测试类,用来调度数据处理和视图的关系

 1 package DateFormatClass;
 2 
 3 import java.text.ParseException;
 4 import java.util.Calendar;
 5 
 6 import static DateFormatClass.DateDao.intervalNum;
 7 
 8 @SuppressWarnings("all")
 9 public class Test {
10     public static void main(String[] args) throws ParseException {
11         //创建视图对象
12         Views views = new Views();
13         System.out.println("请输入年份");
14         int year = views.inputNum(2020, 9999);
15         System.out.println("请输入月份");
16         int month = views.inputNum(1, 12);
17 
18         //创建日期类对象
19         Calendar cl = Calendar.getInstance();
20         //设置默认值
21         cl.set(Calendar.YEAR, year);
22         cl.set(Calendar.MARCH, month - 1);
23         cl.set(Calendar.DATE, 1);
24         //判断初始日期是星期几
25         int dayOfWeek = cl.get(Calendar.DAY_OF_WEEK);
26         //获取本月最大的天数
27         int dayNumberOfMonth = cl.getActualMaximum(Calendar.DATE);
28         //打印日期的抬头
29         System.out.println("星期日\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六");
30         //打印日期第一排空格
31         for (int i = 1; i <= dayOfWeek - 1; i++) {
32             System.out.printf("%-8s", "");
33         }
34         //本月休假天数
35         int relaxDays = 0;
36         //本月休假的周末天数
37         int relaxWeekends = 0;
38 
39 
40         for (int i = 1; i <= dayNumberOfMonth; i++) {
41             //设置日
42             cl.set(Calendar.DATE, i);
43             //得到当前日期与初始日期:2020.2.2相差的天数
44             int intervalDays = intervalNum(cl);
45 
46             //判断该天是不是休息日
47             //隔3天休息一次,即每4天休息一次
48             if (intervalDays % 4 == 0) {
49                 //补齐为8个字符,有[]
50                 System.out.printf("%-8s", "[" + i + "]");
51                 relaxDays++;
52                 //判断是否周末
53                 //注意:1:周日,7:周六
54                 if (cl.get(Calendar.DAY_OF_WEEK) == 1 || cl.get(Calendar.DAY_OF_WEEK) == 7) {
55                     relaxWeekends++;
56                 }
57             } else {
58                 //补齐为8个字符,无[]
59                 System.out.printf("%-8s", i);
60             }
61 
62             //如果该天是周六,换行
63             //注意:1:周日,7:周六
64             if (cl.get(Calendar.DAY_OF_WEEK) == 7) {
65                 System.out.println();
66             }
67 
68         }
69         System.out.println();
70         System.out.println("本月休息天数有:" + relaxDays + "天");
71         System.out.println("本月轮到周末休息天数是" + relaxWeekends + "天");
72     }
73 
74 }

 



标签:Java,cl,int,习题集,System,日期,import,Calendar,out
来源: https://www.cnblogs.com/baiyangshu/p/14864412.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有