可视化日历【Java,有详细的注释】
可视化日历【Java,有详细的注释】
杨润康Bla 发表于2年前
可视化日历【Java,有详细的注释】
  • 发表于 2年前
  • 阅读 15
  • 收藏 0
  • 点赞 2
  • 评论 0

腾讯云 技术升级10大核心产品年终让利>>>   

package cn.bla.test;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Scanner;
/** * VisualCalender ===可视化日历=== * @author 杨润康 * @category java * @since 2015-5-31 * @version 1 */
public class VisualCalender {
    public static void main(String[] args) throws Exception {
        Scanner input = new Scanner(System.in);
        System.out.println("请输入日期:<格式:2015-5-5>");
        String time=input.next();//用户输入的字符串
        //具体的处理判断
        DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
        Date date = dateFormat.parse(time);//将字符串解析成日期类型

        //日历类上场
        Calendar calendar = new GregorianCalendar();
        calendar.setTime(date);//将日期放进日历里面去,然后对日历进行操作,实际上就是对日期进行操作
        //因为日历都是从一开始的,所以先将用户输入的日期的日部分变为1
        calendar.set(Calendar.DATE, 1);
        //得到当前月份的一号,是在一周之内的周几 (得到的数要-1 ,因为老外的是从周日开始一周的生活的,所以比我们早了一天)
        int actualDayInAWeek=calendar.get(Calendar.DAY_OF_WEEK)-1;
        //得到当前月份有多少天DATE || DAY_OF_MONTH
        int actualDaysInMonth=calendar.getMaximum(Calendar.DAY_OF_MONTH);
        //现在处理在具体的某一号的后面做个标记
            //先前为了处理月份的一号是在一周的星期几时,曾把它设为1,现在把它恢复过来,为下面的标记做准备
            String getOldDate=dateFormat.format(date);
            Date oldDate = dateFormat.parse(getOldDate);
            calendar.setTime(oldDate);
            //取月份中的具体的某一号
            int day=calendar.get(Calendar.DATE);
        //程序的可视化部分
        System.out.println("\t\t===可视化日历===");
        System.out.println("日\t一\t二\t三\t四\t五\t六");
        for(int i=1;i<=actualDaysInMonth;i++){
            //让1号在具体的周几的位置,然后在这个位置之前是不打印任何字符的,只打印空格
            if(i<=actualDayInAWeek){
                System.out.print("\t");
                continue;
            }
            if((i-actualDayInAWeek)==day){//在具体的某一号的后面做#个标记
                System.out.print((i-actualDayInAWeek)+"#\t");
                continue;
            }
            System.out.print((i-actualDayInAWeek)+"\t");//(i-actualDayInAWeek)在周X的位置,是从一开始打印的

            if(i%7==0){
                System.out.println();
            }
        }
    }
}
共有 人打赏支持
粉丝 15
博文 76
码字总数 0
×
杨润康Bla
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: