用java编写日历,输入年月可以显示当前月份信息

用java编写日历,输入年月可以显示当前月份信息,第1张

/

  日历     1900年1月1日开始

  @author yaomingzi

 

 /

public class Calendar {

    /

      判断某一年是否是闰年

      是闰年返回true

      @param year

      @return

     /

    public static boolean isBissextile(int year) {

        if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) {

            return true;

        }

        return false;

    }

    

    /

      计算具体某月有多少天

      @param month

      @param year

      @return

     /

    public static int daysOfmonthInyear(int month, int year) {

        int months[] = {31,29,31,30,31,30,31,31,30,31,30,31};

        //判断是否是闰年,闰年2月有29 天 

        if (isBissextile(year)) {

            months[1] = 29;

        } else {

            months[1] = 28;

        }

        return months[month - 1];

    }

    

    /

      计算具体某天距离1900年1月1日有多少天数

      @param day

      @param month

      @param year

      @return

     /

    public static int daysFromNovecento(int day, int month, int year) {

        //接收天数差值

        int daysSum = 0;

        //将距离1900年的整年天数相加

        for (int i = 1900; i < year; i++) {

            //是闰年则为366天不是为365天

            daysSum += isBissextile(i)  366 : 365; 

        }

        //计算当年距离1月的整月天数

        for (int j = 1; j < month; j++){

            daysSum += daysOfmonthInyear(j, year);

        }

        //加上当月天数

        daysSum += day;

        return daysSum;

    }

    /

      <p>判断具体某天是星期

      <p>return 1 2 3 4 5 6 0

      @param day

      @param month

      @param year

      @return

     /

    public static int whichWeek(int day, int month, int year){

        //190011是星期一,取余得1234560分别代表星期一到星期天

        return daysFromNovecento(day, month, year) % 7;

    }

    /

      打印日历 --按日历格式打印某年某月的所有日期

      @param month

      @param year

     /

    public static void printMonthOfYear(int month, int year){

        String []weeks = {"星期天","星期一","星期二","星期三","星期四","星期五","星期六"};

        //打印最上面的星期标记

        for (int i = 0; i < weekslength; i++) {

            Systemoutprint(weeks[i] + "\t");

        }

        Systemoutprintln();

        //计数器

        int count = 0;

        //打印当月日期前的水平制表  判断当月1号是星期几就打印几个(0表示星期天)

        for (int j = 0; j < whichWeek(1, month, year); j++) {

            Systemoutprint("\t");

            count++;

        }

        //循环次数为当月天数

        for (int i = 1; i <= daysOfmonthInyear(month, year); i++) {

            Systemoutprint(i + "\t");

            count++;

            //每打印7个打印换行

            if (count % 7 == 0) {

                Systemoutprintln();

            }

        }

        //当所有日期打印完毕若最后一个打印后没有换行打印换行美化显示

        if (count % 7 !=0) {

            Systemoutprintln();

        }

        Systemoutprintln();

    }

    

    /

      打印日历--按日历格式打印某一年的所有日期

      @param year

     /

    public static void printYear(int year){

        Systemoutprintln("\t\t\t" + year + "年");

        //循环12个月  每次调用打印月份方法

        for (int i = 1; i <= 12; i++) {

            Systemoutprintln("\t\t\t" + i + "月");

            printMonthOfYear(i, year);

        }

    }

    //main方法 --- 测试

    public static void main(String []args) {

        Systemoutprintln(daysFromNovecento(30, 10, 2015));

    }

    

}

import javatextSimpleDateFormat;

import javautilCalendar;

import javautilDate;

import javautilLocale;

public class Test {

public static void main(String[] args) {

Calendar calendar = CalendargetInstance(LocaleCHINA);

calendarsetTime(new Date());// 设置当前日期

int day = calendargetMinimum(CalendarDAY_OF_MONTH);// 取得当前月的最小日期(天)

calendarset(CalendarDAY_OF_MONTH, day);// 设置天

String sDate = new SimpleDateFormat("yyyy-MM-dd")format(calendargetTime());// 格式化成字符串

Systemoutprintln(sDate);// 打印

}

}

import javautil;

public class riqi {

public static void main(String[] args) {

int totaldays = 0;

int dayofmonth = 0;

int twomonth;

Scanner input = new Scanner(Systemin);

Systemoutprint("请输入年份:");

int year = inputnextInt(); // 输入年份

Systemoutprint("请输入月份:");

int month = inputnextInt(); // 输入月份

for (int i = 1900; i < year; i++) {

if (((i % 4 == 0) && (i % 100 != 0)) || (i % 400 == 0)) {

totaldays = totaldays + 366;

} else {

totaldays = totaldays + 365;

}

}

for (int nomonth = 1; nomonth <= month; nomonth++) {

if (nomonth == 1 || nomonth == 3 || nomonth == 5 || nomonth == 7

|| nomonth == 8 || nomonth == 10 || nomonth == 12) {

dayofmonth = 31;

} else if (nomonth == 2) {

if ((year % 4 == 0) && (year % 100 != 0) || (year % 400 == 0)) {

dayofmonth = 29;

} else {

dayofmonth = 28;

}

} else {

dayofmonth = 30;

}

if (nomonth < month) {

totaldays = totaldays + dayofmonth;

}

// Systemoutprintln(totaldays);

}

Systemoutprintln("星期一\t星期二\t星期三\t星期四\t星期五\t星期六\t星期天");

int temp = (totaldays % 7);

// Systemoutprint(temp);

for (int p = 0; p < temp; p++) {

Systemoutprint("\t");

}

for (int w = 1; w <= dayofmonth; w++) {

Systemoutprint(w + "\t");

if ((totaldays + w) % 7 == 0) {

Systemoutprintln();

}

}

}

}

Calendar JAVA 这个JAVA日历用处很多,好好看看这个很有好处我们java用的复杂的时间 *** 作,一般都用这个

Java 本身提供了对 "Gregorian Calendar" 规则的实现。我们从 CalendargetInstance() 中所获得的实例就是一个 "GreogrianCalendar" 对象(与您通过 new GregorianCalendar() 获得的结果一致)。

下面的代码可以证明这一点:

import javaio;

import javautil;

public class WhatIsCalendar

{

public static void main(String[] args) {

Calendar calendar = CalendargetInstance();

if (calendar instanceof GregorianCalendar)

Systemoutprintln("It is an instance of GregorianCalendar"t;

}

}

Calendar 在 Java 中是一个抽象类(Abstract Class),GregorianCalendar 是它的一个具体实现。

我们也可以自己的 Calendar 实现类,然后将它作为 Calendar 对象返回(面向对象的特性)。在 IBM alphaWorks 上,IBM 的开发人员实现了多种日历(>

import javautilCalendar;

import javautilScanner;

public class CalendarX {

static Calendar c=CalendargetInstance();

static String[] wd={"SAT","SUN","MON","TUE","WED","THU","FRI",};

public static void main(String[] args) {

Scanner sn = new Scanner(Systemin);

Systemoutprint("Input year:");

int year=snnextInt();

Systemoutprint("Input month:");

int month=snnextInt();

printCalendar(year,month);

}

static void printCalendar(int y,int m){

cset(CalendarYEAR, y);

cset(CalendarMONTH, m-1);

cset(CalendarDATE, 1);

int fd=cget(CalendarDAY_OF_WEEK);

int md=cgetActualMaximum(CalendarDATE);

for(int i=0; i<7; i++)Systemoutprintf("%5s",wd[i]);Systemoutprintln();

for(int i=0; i<fd; i++)Systemoutprintf("%5s","");

for(int i=0; i<md; i++){

Systemoutprintf("%5s",i+1);

if(++fd%7==0)Systemoutprintln();

}

}

}

这个比较简单,4行代码就行

Calendar calendar = CalendargetInstance();

calendarset(CalendarDAY_OF_MONTH, 1);

SimpleDateFormat format = new SimpleDateFormat("E");

Systemoutprintln("本月第一天是:" + formatformat(calendargetTime()));

如果你要得到一个数字的话就是:

calendarget(CalendarDAY_OF_WEEK),当然,这个结果是以星期天为第一天算出来的,如果要换成星期一开始,减1就行了

希望能帮助你。

public static int getDayOfMonth(){

Calendar aCalendar = CalendargetInstance(LocaleCHINA);

int day=aCalendargetActualMaximum(CalendarDATE);

return day;

}

这是获取的一个月的最大的天数。。。。

以上就是关于用java编写日历,输入年月可以显示当前月份信息全部的内容,包括:用java编写日历,输入年月可以显示当前月份信息、在java中如何通过一个月份,获得该月份的第一天的日期、输入某年某月 打印出当月日历,要求日期和星期对应,用JAVA语言等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9415111.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存