编写可视化日历

最近在复习Java基础,编写一个实例:很简陋的可视化日历。我会赶快学会markdown,对你阅读造成不便,要谅解哦!委屈

温馨提示: 如果觉得对你有那么一点点帮助,请帮我在评论区祝我喜欢的女孩能够找到幸福:晓儿,希望幸福能快点找到你!

先上代码:编写这个可视化日历呢,用的是Java.util包的Calendar类。使用这个类需要注意:每周是从周日开始,从1-7。也就是数字1代表周日,然后依次推。实现当月日期的查询有两个显示方法:

第一种:因为要知道当月的第一天并不一定是周日,所以需要把日历中上个月多出来的天数算进去。第一种方法呢,使用

c1.get(Calendar.DAY_OF_WEEK);	//当月第一天是星期几

得到当月首日是周几也就知道它前面有几天是上个月的,记住是从周日开始的。为了能够每周换一行我使用对7求模的方法,所以引入tmp这个中间变量,使用这个看上去有点乱的循环实现把上个月的天数空出来和每周换行。

接着判断是否为当日,通过得到当日是当月的第几天然后判断是否换行。

 int today = c.get(Calendar.DAY_OF_MONTH);    //当天是这个月的第几天,方便做标记

if(i-tmp == today) //i减去tmp的意义在于得到去除上月残留天数得到现在是当月的第几天
public static void test(String str) throws ParseException {
        DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
        
        Date date = df.parse(str);
        Calendar c = new GregorianCalendar();
        c.setTime(date);
        
        Date date1 = df.parse(str.substring(0,str.lastIndexOf('-')+1)+"01");
        Calendar c1 = new GregorianCalendar();
        c1.setTime(date1); //月初
        
        int maxDates = c.getActualMaximum(Calendar.DATE); //当月天数
        int start = c1.get(Calendar.DAY_OF_WEEK);    //当月第一天是星期几
        int today = c.get(Calendar.DAY_OF_MONTH);    //当天是这个月的第几天,方便做标记
        
        int tmp = start-1;
        System.out.println("日\t一\t二\t三\t四\t五\t六");
        for (int i = 1; i <= maxDates+tmp; i++) {
            if (i < start) {
                System.out.print(" "+"\t");
            } else {
                System.out.print(i-tmp);
                if (i-tmp == today) {
                    System.out.print("*"+"\t");
                } else {
                    System.out.print("\t");
                }
            }
            if (i%7 == 0) {
                System.out.println();
            }
        }
    }
第二种:使用的是Calendar类的静态成员变量作为换行依据。通过判断当月首日是周几,先用小循环将上个月的天数空出来占位,再通过得到当月的总天数作为循环条件。
int maxDates = c.getActualMaximum(Calendar.DATE); //当月天数

c1.add(Calendar.DATE, 1); // 每循环一次,日期增加一天
然后通过 c1.get(Calendar.DAY_OF_WEEK)==Calendar.SATURDAY 实现每到周六就换行一次。
注意:Calendar.SATURDAY的数字表示为7.下面是Calendar的源码:
    /**
     * Value of the {@link #DAY_OF_WEEK} field indicating
     * Saturday.
     */
    public final static int SATURDAY = 7;
public static void test2(String str) throws ParseException {
        
        DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
        
        Date date = df.parse(str);
        Calendar c = new GregorianCalendar();
        c.setTime(date);
        
        Date date1 = df.parse(str.substring(0,str.lastIndexOf('-')+1)+"01");
        Calendar c1 = new GregorianCalendar();
        c1.setTime(date1); //月初
        
        int maxDates = c.getActualMaximum(Calendar.DATE); //当月总天数
        int start = c1.get(Calendar.DAY_OF_WEEK);    //当月第一天是星期几
        int today = c.get(Calendar.DAY_OF_MONTH);    //当天是这个月的第几天,方便做标记
        
        System.out.println("日\t一\t二\t三\t四\t五\t六");
        for (int i = 1; i < c1.get(Calendar.DAY_OF_WEEK); i++) {  //将上月的剩余天数空出来
            System.out.print(" " + "\t");
        }
        
        for (int i = 1; i <= maxDates; i++) { 
                System.out.print(i);
                if (i == today) {   //如果当天是今天,就做一个星号标记
                    System.out.print("*"+"\t");
                } else {
                    System.out.print("\t");
                }
                if (c1.get(Calendar.DAY_OF_WEEK)==Calendar.SATURDAY) {   //每个周六就换行
                    System.out.println();
                }
                c1.add(Calendar.DATE, 1);  //每循环一次,日期增加一天
        }
        
    }

然后直接在main方法进行调用:

public static void main(String[] args) throws ParseException{
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入日期:(年月日,格式:2018-3-13):");
		
		String str = sc.nextLine();
		
		test2(str);
	}

结果如图所示(前方三俗预警,高手请回避!!!):

什么破网速,连图都加载不出来!哈哈哈

好了,虽然很LOW,慢慢来吧!记得帮我留言哦

### 回答1: 要使用LabVIEW制作日历,需要以下步骤: 1. 创建用户界面:可以使用LabVIEW的图形化编程工具,创建一个界面,包括显示日期的控件和按钮。 2. 获取当前日期:使用LabVIEW的内置功能获取当前的日期和时间。 3. 解析日期:使用LabVIEW的字符串处理函数,将当前日期解析为年、月、日三个变量。 4. 计算日历:使用LabVIEW的循环结构和条件判断,根据年和月变量计算出该月的日历。 5. 显示日历:将计算好的日历信息显示在界面上的日历控件中。 6. 响应用户操作:为按钮添加响应事件,当用户点击按钮时,刷新日历显示,可以显示上一个月、下一个月的日历。 7. 添加其他功能:可以进一步完善日历的功能,比如添加事件提醒功能、记录待办事项等。 使用LabVIEW制作日历的好处是,可以利用LabVIEW的图形化编程环境,快速创建用户界面,并且可以灵活地使用LabVIEW的功能模块来处理日期和计算日历。同时,LabVIEW具有良好的可视化能力,可以提供一个直观的界面给用户操作和查看日历。 ### 回答2: LabVIEW是一种通用的图形化编程语言和开发环境,可以用于不同领域的应用开发。当涉及到制作日历时,LabVIEW可以利用其图形化编程的特点以及丰富的工具箱来实现。 首先,我们可以使用LabVIEW中的布局和控件来创建日历的外观。可以使用面板控件,如表格、文本框和按钮来布置日期和月份,以及实现选择日期的功能。可以使用表格控件来显示每个月的日期,使用文本框来显示当前的日期和月份。还可以使用按钮控件来实现切换到上一个月和下一个月的功能。 接下来,我们可以使用LabVIEW中的数据结构和函数来动态生成日历。可以编写程序来计算每个月有多少天,并根据当前日期和月份确定每个日期在日历中的位置。可以使用循环结构来动态地生成日期格子,并使用条件结构来确定日期是否为当前日期。 此外,LabVIEW还提供了与时间和日期相关的函数和工具箱,如获取当前日期和时间、计算指定日期的星期几等。这些功能可以帮助我们实现日历中的其他相关功能,如显示当前日期的背景色、标记特定日期等。 总之,通过利用LabVIEW的图形化编程和丰富的工具箱,我们可以方便地制作一个功能完善的日历应用程序。无论是显示日期、选择日期还是其他相关功能,LabVIEW都提供了强大的功能和灵活的操作方式。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值