您的位置:首页 > 编程语言 > Java开发

可视化日历【Java,有详细的注释】

2015-05-31 19:17 435 查看
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();
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: