java—可视化日历

1;为了回顾熟悉一下关于Date类的为核心的一下关于时间日期的类,打一个小型的项目练练手,
这个基本上没有用到面向对象设计的思想,基本上还是用面向过程设计的思维方式,只需一个类,所有任务都是在main方法中完成的,单纯的就是练练手;熟悉一下过程;

2;要达到怎样的效果;如图
这里写图片描述

3;分析;
3.1;要从键盘输入,则需要接受;

//先要获取键盘输入流;
Scanner scanner = new Scanner(System.in);
//接收一行;
String temp = scanner.nextLine();
这些可以自己查API文档;

3.2;将字符串表示的时间转化为日历的时间;

//键盘获取字符串时间
String temp = scanner.nextLine();

分几步;
1;String类型转化为Date类型;

//使用DateFormat类;
//需要获取时间格式化字符串;SimpleDateFormat类;
DateFormat  dateFormat = new SimpleDateFormat("yyyy-MM-dd");
//使用其中parse()方法;将字符串时间转化为Date对象时间;
Date date = dateFormat.parse(temp);

2;将Date时间对象转化为Calendar日历对象;

//创建一个Calendar对象,将Date时间对象转化为这个对象
        Calendar calendar = new  GregorianCalendar();
//使用setTime()方法将calendar对象的时间设置为Date对象表示的时间
        calendar.setTime(date);

3.3;接下来就负责使用Caledar系列方法完成可视化日历了;

1,需要保存一下传入时间的在这个月的天数;
int trueDate = calendar.get(Calendar.DATE);
//将日期变成1号,因为日历是从1号开始的;
calendar.set(Calendar.DAY_OF_MONTH, 1);//这里写Calendar.DATE一样;
//获取1号这是星期几;确定这个月日历的开始地方;
int k = calendar.get(Calendar.DAY_OF_WEEK);
//获取这个月的最大天数;
int maxDate = calendar.getActualMaximum(Calendar.DATE);
//接下来就是简单的控制界面输出了;这里需要注意一下换行;
//当这天是这个星期的星期6时要进行换行;
int w = calendar.get(Calendar.DAY_OF_WEEK);
if(w==7){
    System.out.print("\n");
}
calendar.add(Calendar.DATE, 1);//还是根据calendar时间来判断星期几的因此需要加1

4;源码;

package calendar;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Scanner;

public class CalendarText {
    public static void main(String[] args) throws ParseException {
        //提示输入日期的格式;
        System.out.println("输入格式为“1996-12-03;");
        //获得一个键盘输入流;
        Scanner scanner = new Scanner(System.in);
        //接收一行字符串;
        String temp = scanner.nextLine();
        //提供时间格式化字符串;
        DateFormat  dateFormat = new SimpleDateFormat("yyyy-MM-dd");
        //将输入的时间字符串按照时间格式化字符串转化成Date时间对象;
        Date date = dateFormat.parse(temp);
        //创建一个Calendar对象日期;
        Calendar calendar = new  GregorianCalendar();
        //将Date对象表示时间传入Calendar对象则。时间变为日历类型;
        calendar.setTime(date);
        //保存一下传入时间的在这个月的天数;
        int trueDate = calendar.get(Calendar.DATE);
        //将日期变成1号,日历是从1号开始的;
        calendar.set(Calendar.DAY_OF_MONTH, 1);//这里写Calendar.DATE一样;
        //获取1号这是星期几;
        int k = calendar.get(Calendar.DAY_OF_WEEK);
        //获取这个月的最大天数;
        int maxDate = calendar.getActualMaximum(Calendar.DATE);

        System.out.println("日\t一\t二\t三\t四\t五\t六");
        for(int i = 1; i < k; i++){
            System.out.print('\t');
        }

        for(int i = 1; i<=maxDate; i++){
            if(i == trueDate){
                System.out.print("<"+ i +">"+"\t");
            }
            else{
                System.out.print(i+"\t");
            }

            int w = calendar.get(Calendar.DAY_OF_WEEK);
            if(w==7){
                System.out.print("\n");
            }
            calendar.add(Calendar.DATE, 1);
        }

    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值