• 万年历java


    public void showTime(){
    /*万年历 :  
    1900年1月20号是星期几?
    1月1号是星期一
    1月8号是星期一
    1月15号是星期一
    1%7 = 1
    8%7 = 1
    15%7 = 1
    ★: 1. 用日期数去%7可以得到星期数 
    1900年2月12号是星期几?
    ★: 2. 从1月1号 直到 2月12的总天数 % 7 得到星期数
    ★★★: 为什么要算星期几?因为在打印万年历的时候,需要知道一个月份的1号是星期几,才能正确打印之后的日期 
    ★★★:2015年8月1号是星期几?
    1900-1-1到2015-8-1的总天数  % 7 */
    int year=2017;
    int month=11;
    double all=0;
    //从1900-1-1到year的前一年的总天数
    all=getAllYearDay(year);
    //从year的1月到month的前一个月的总天数
    all+=getAllMonthDay(year,month);
    System.out.println("总日子共有:"+all+"天");
    //获得当前month的1号的对应总天数,因为这个总天数可以确定1号打印的位置(星期几)
    //获得1号是星期几的数字,因为这个week数字确定1号前面的空格个数
    int week=(int) (all%7);
    //打印表头和1号之前的空格部分
    for (int j = 0; j < week; j++) {
    System.out.print(0+" ");
    }
    //开始打印月历,但是你要获得该月到底要打印多少天
    //开始循环打印,如果是星期天则换行
    int dates=getMonthDay(year,month);
    for (int i = 1; i < dates; i++) {
    System.out.print(i+" ");
    if((i+week)%7==0){
    System.out.println();
    }
    }

    }
    //得到某月有多少天
    int getMonthDay(int year,int month){
    int dates=0;
    for (int i = 1; i < month; i++) {
    if(i==1||i==3||i==5||i==7||i==8||i==10||i==12){
    dates=31;
    }else if( i==2 && (year % 4==0 && year % 100 != 0 ||year % 400 == 0) ){
    dates=29;
    }else if( i==2 && !(year % 4==0 && year % 100 != 0 ||year % 400 == 0) ){
    dates=28;
    }else{
    dates=30;
    }
    }
    return dates;
    }
    //从year的1月到month的前一个月的总天数
    int getAllMonthDay(int year,int month){
    int all=0;
    for (int i = 1; i < month; i++) {
    if(i==1||i==3||i==5||i==7||i==8||i==10||i==12){
    all+=31;
    }else if( i==2 && (year % 4==0 && year % 100 != 0 ||year % 400 == 0) ){
    all+=29;
    }else if( i==2 && !(year % 4==0 && year % 100 != 0 ||year % 400 == 0) ){
    all+=28;
    }else{
    all+=30;
    }
    }
    return all;
    }
    //从1900-1-1到year的前一年的总天数
    double getAllYearDay(int year){
    double all=0;
    for (int i = 1900; i < year; i++) {
    if( i % 4==0 && i % 100 != 0 ||i % 400 == 0){
    all+=366;
    }else{
    all+=365;
    }
    }
    return all;

    }

    打印结果:

    觉得有用的朋友希望可以帮忙“赞”一下哟(赠人玫瑰手有余香),谢谢^_^

  • 相关阅读:
    修改css样式+jq中的效果+属性操作+元素操作
    案例1:点击菜单显示相应的图片
    jq容易混淆点
    jQuery中的选择器
    JQ基本
    arguments的使用
    函数方法
    forEach遍历
    数组中常用的方法
    数组 Array
  • 原文地址:https://www.cnblogs.com/janesyf/p/7840987.html
Copyright © 2020-2023  润新知