Java万年历
来源:互联网 发布:手机装windows 编辑:程序博客网 时间:2024/05/21 03:20
import java.util.Scanner;
/*
参考1900-1-1,这一天是星期一,
求得总天数,并对7求余,等到的数就是日历表中距离左边的空格数
(上一个月的日期)
当然对于win7来说就是这样的规律。
*/public class Test {
public static void main(String[] args) {
//1)从键盘上输入一个年,月
Scanner sc = new Scanner(System.in);
System.out.println("请输入年和月");
int year = sc.nextInt();
int month = sc.nextInt();
//2)打印
printCalendar(year,month);
}
public static void printCalendar(int year, int month) {
//打印表头
System.out.println("日\t一\t二\t三\t四\t五\t六\t");
int fromday = getWeekday(year,month,1);
int count = 0;//统计打印的数字的个数
//先打印当前月第一周之前的空白
for(int i = 1; i <= fromday; i++){
System.out.print("\t");
count++;
}
//打印当月的天数
int days = getMohthDays(year,month);
for(int i = 1; i<=days ; i++){
System.out.print(i + "\t");
count++;
//判断是否需要换行
if (count % 7 == 0) {
System.out.println();
}
}
}
//返回指定年,月的天数
private static int getMohthDays(int year, int month) {
switch (month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
return 31;
case 4:
case 6:
case 9:
case 11:
return 30;
case 2:
//如果是闰年返回29天,否则返回28天
if ( isLeap(year)) {
return 29;
}else {
return 28;
}
}
return 0;
}
//判断是否为闰年
private static boolean isLeap(int year) {
if ( year%4==0 && year%100!=0 || year%400==0) {
return true;
}
return false;
}
//返回指定日期是星期几的数字, 0~6, 返回0表示星期日,返回1表示星期一
private static int getWeekday(int year, int month, int day) {
//先计算 1900-1-1 到指定日期间隔的总天数
int sumDays = getSumDays(year, month, day);
return sumDays%7;
}
//返回1900-1-1 到指定日期间隔的总天数
private static int getSumDays(int year, int month, int day) {
// 2017- 8 -26
int sum = 0 ;
//先计算整年的天数,即 1900到year-1年的总天数, 1900到2016年年底的总天数
for(int y = 1900; y < year; y++){
sum += getDaysOfYear(y);
}
//再计算 当年整月的总天数,即year这一年从1月到month-1月的天数, 2017年1月到7月的总天数
for( int m = 1 ; m < month; m++ ){
sum += getMohthDays(year, m);
}
//最后加上当月的天数, 2017年8月当月的天数
sum += day;
return sum;
}
//返回指定年的天数
private static int getDaysOfYear(int year) {
if (isLeap(year)) {
return 366;
}
return 365;
}
阅读全文
0 0
- java万年历
- java 万年历
- Java万年历
- JAVA万年历
- java 万年历
- java万年历
- java万年历
- java万年历
- 【java】万年历
- java--万年历
- JAVA万年历
- java 万年历
- JAVA 万年历
- Java万年历
- java 万年历
- java万年历
- java 万年历Demo
- java输出万年历
- 【python】常见异常及try语句
- 看黑科技如何助白娘子逃出雷锋塔!
- 一分钟了解"matlab绘3D图_mesh和surf以及其区别"
- Android studio 上传到 GitHub
- 查看Linux的版本
- Java万年历
- 项目结束,整理一下博客
- laravel 提交方法get、post、put、delete、patch
- oracle sql 语句嵌套子查询 查询速度慢
- 解决Minimum supported Gradle version is 3.3. Current version is 2.14.1问题
- LAMP stack-5.6.22 (OpenLogic CentOS 7.2)
- @Controller注解和@RestController注解的用法和区别
- 驱动操作命令:
- 移动端UI