import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Scanner;
public class CalendarWork {
public static void printCalendar(Date theday){
int maxday = 0;
int firstday = 0;
int currentday = 0;
// 创建一个日期对象,并设置时间
Calendar c = new GregorianCalendar();
c.setTime(theday);
//获取这个日期的月份的天数
maxday = c.getActualMaximum(c.DATE);
//获取这个日期
currentday = c.get(c.DATE);
//获取这个月的第一天的星期数
c.set(c.DATE,1);
firstday = c.get(c.DAY_OF_WEEK);
System.out.println("一\t二\t三\t四\t五\t六\t日\n");
if(firstday > 1){
for(int i = 1; i < firstday - 1; i++){
// Calendar.SUNDAY = 1 Calendar.MONDAY = 2
// Calendar.TUESDAY = 3 Calendar.WEDNESDAY = 4
// Calendar.THURSDAY = 5 Calendar.FRIDAY = 6
// Calendar.SATURDAY = 7
System.out.print("\t");
}
}else{
int k = 1;
while(k < (8 - firstday)){
System.out.print("\t");
k++;
}
}
for(int j = 1; j <= maxday; j++){
//判断日期是否与输入的日期相同,相同添加一个#标记
if(j == currentday){
System.out.print("#");
}
System.out.print(j + "\t");
//判断星期,按照七天一行换行!
if(((j + (firstday - 2)) % 7) == 0){
System.out.println();
}
}
System.out.println();
}
public static void main(String[] args) {
k://标记
while(true){
System.out.println("请输入一个日期(2017-12-27): ");
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
String strs[] = str.split("-");
int[] date = new int[strs.length];
for(int i = 0; i < strs.length; i++){
date[i] = Integer.parseInt(strs[i]);
}
//date[0]是年,date[1]是月,date[2]是日
if(date[1] < 1 || date[1] > 12){
System.out.println("请输入正确的月份(1-12):");
continue k;
}
if(date[1] == 2){
//判断是否是闰年
if(date[0] % 4 == 0 && date[0] % 100 != 0
|| date[0] % 400 == 0){
if(date[2] < 1 || date[2] >29){
System.out.println("请输入正确的日期(1-29)");
continue k;
}
}else{
if(date[2] < 1 || date[2] >28){
System.out.println("请输入正确的日期(1-28)");
continue k;
}
}
}else{
if(date[1] == 4 || date[1] == 6 || date[1] == 9
|| date[1] == 11)
{
if(date[2] < 1 || date[2] >30){
System.out.println("请输入正确的日期(1-30)");
continue k;
}
}else{
if(date[2] < 1 || date[2] >31){
System.out.println("请输入正确的日期(1-31)");
continue k;
}
}
}
try {
DateFormat df = new SimpleDateFormat("yy-MM-dd");
Date theday = df.parse(str);
//调用方法输出日期
printCalendar(theday);
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
}
}
Java 输入一个日期,然后输出该月份
最新推荐文章于 2022-10-12 16:04:30 发布