有大佬可以分享一下javaGUI界面的万年历源码(带农历,节气节日之类的)嘛。非常感谢!

8316℃ LYNDA

有大佬可以分享一下javaGUI界面的万年历源码(带农历,节气节日之类的)嘛。非常感谢!

java编写日历

我给你贴上我在java核心技术中看到的代码吧,当然没有输入年份和月份,是按照当前时间创建的,写有我写的注释,应该能看的懂

/*

 * 2012年5月13日10:37:58

 * 日历程序

 * Function:

 *     显示当前月份的日历

 * 总结

 * 1. 0-11分别代表1-12月

 * 1-7分别代表周日-周六

 * 2. 使用GregorianCalendar对象的get方法(参数)获取月,日,年等信息

 * 3.

 */

import java.text.DateFormatSymbols;

import java.util.*;

public class CalendarTest {

    public static void main(String[] args) {

        //construct d as current date构造一个日期

        GregorianCalendar d = new GregorianCalendar();

       

        //获取今天是这个月的第几天

        int today = d.get(Calendar.DAY_OF_MONTH);    //Calendar.DAY_OF_MONTH作为参数调用,得到今天是这个月的第几天

        int month = d.get(Calendar.MONTH);            //月份

       

        d.set(Calendar.DAY_OF_MONTH, 1);            //设置d的日期是本月的1号

        int weekDay = d.get(Calendar.DAY_OF_WEEK);    //获取当天位于本星期的第几天,也就确定了星期几,值的范围是1-7

        int firstDayOfWeek = d.getFirstDayOfWeek();    //获取一星期的第一天,我们得到的是Calendar.SUNDAY,因为我们一星期的第一天是周日

       

        int indent = 0;    //为了定位本月第一天,定义索引

        while (weekDay != firstDayOfWeek) {

            //注意,月份用0-11代表1-12月,为了清晰起见,使用常量代替,下面获取月份得到的实际是当前月-1的值,所以我们要加1

            //System.out.printf("当前星期的第%d天,位于当月的第%d天, 现在是%d月\n",

            //    weekDay, d.get(Calendar.DAY_OF_MONTH), d.get(Calendar.MONTH)+1);        //Test Code

           

            indent++;//缩进个数+1

            d.add(Calendar.DAY_OF_MONTH, -1);//当前天数-1,如果现在是1号,则执行本条代码后,时间变为上一个月最后一天

            weekDay = d.get(Calendar.DAY_OF_WEEK);    //重新获取当天位于本星期的第几天

        }

       

        String[] weekDayNames = new DateFormatSymbols().getShortWeekdays();//获取简短形式的星期字符串数组

        //System.out.println(weekDayNames.length);getShortWeekdays()得到的数组的长度是8,下标为0的是没有值1为星期日...7为星期六

        //注释代码1

        //Java核心技术的代码

        /*

        do {

            //System.out.printf("%4s", weekDayNames[weekDay]);    //经过上面定义索引,weekDay代表的是本星期日

            d.add(Calendar.DAY_OF_MONTH, 1);                    //天数加1

            weekDay = d.get(Calendar.DAY_OF_WEEK);                //重新获得weekDay的值

        } while (weekDay != firstDayOfWeek);                    //当循环完一个星期后,这里判断不成立,退出循环

        */

        //我写的代码,替换上面注释代码1

        for (int i=1; i<weekDayNames.length; i++)//打印星期标题

            System.out.printf("%3s\t", weekDayNames[i]);//引号内是一个全角的空格,因为是中文版,不是书上英文环境,中文和空格对于不上,这里我们用\t解决

            //System.out.printf("%3s ", weekDayNames[i]);    //方式2

        System.out.println();//换行

       

        for (int i=1; i<=indent; i++)//确定一星期的一天位置,利用上面indent

            System.out.printf("\t");//如用方式2,则这里内容是四个全角空格

       

        //实现输出日期

        d.set(Calendar.MONTH, month);

        d.set(Calendar.DAY_OF_MONTH, 1);

        do {

            //print day

            int day = d.get(Calendar.DAY_OF_MONTH);

            System.out.printf("%3d", day);

           

            if (day == today)

                System.out.print("*");

            System.out.print("\t");

           

            d.add(Calendar.DATE, 1);//天数加1

            weekDay = d.get(Calendar.DAY_OF_WEEK);//刷新weekDay

            if (weekDay == firstDayOfWeek) //如果这天等于星期天则换行

                System.out.println();

        } while (d.get(Calendar.MONTH) == month);

    }

}

Java日历查询程序(万年历)

花了半个小时写了一个望采纳给好评。

import java.util.Scanner;

public class PrintCalendar {

/** Main method */

public static void main(String[] args) {

Scanner input = new Scanner(System.in);

// Prompt the user to enter year

System.out.print("Enter full year (e.g., 2001): ");

int year = input.nextInt();

// Prompt the user to enter month

System.out.print("Enter month in number between 1 and 12: ");

int month = input.nextInt();

// Print calendar for the month of the year

printMonth(year, month);

}

/** Print the calendar for a month in a year */

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

// Print the headings of the calendar

printMonthTitle(year, month);

// Print the body of the calendar

printMonthBody(year, month);

}

/** Print the month title, e.g., May, 1999 */

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

System.out.println(" " + getMonthName(month)

+ " " + year);

System.out.println("-----------------------------");

System.out.println(" Sun Mon Tue Wed Thu Fri Sat");

}

/** Get the English name for the month */

public static String getMonthName(int month) {

String monthName = "";

switch (month) {

case 1: monthName = "January"; break;

case 2: monthName = "February"; break;

case 3: monthName = "March"; break;

case 4: monthName = "April"; break;

case 5: monthName = "May"; break;

case 6: monthName = "June"; break;

case 7: monthName = "July"; break;

case 8: monthName = "August"; break;

case 9: monthName = "September"; break;

case 10: monthName = "October"; break;

case 11: monthName = "November"; break;

case 12: monthName = "December";

}

return monthName;

}

/** Print month body */

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

// Get start day of the week for the first date in the month

int startDay = getStartDay(year, month);

// Get number of days in the month

int numberOfDaysInMonth = getNumberOfDaysInMonth(year, month);

// Pad space before the first day of the month

int i = 0;

for (i = 0; i < startDay; i++)

System.out.print(" ");

for (i = 1; i <= numberOfDaysInMonth; i++) {

System.out.printf("%4d", i);

if ((i + startDay) % 7 == 0)

System.out.println();

}

System.out.println();

}

/** Get the start day of month/1/year */

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

final int START_DAY_FOR_JAN_1_1800 = 3;

// Get total number of days from 1/1/1800 to month/1/year

int totalNumberOfDays = getTotalNumberOfDays(year, month);

// Return the start day for month/1/year

return (totalNumberOfDays + START_DAY_FOR_JAN_1_1800) % 7;

}

/** Get the total number of days since January 1, 1800 */

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

int total = 0;

// Get the total days from 1800 to 1/1/year

for (int i = 1800; i < year; i++)

if (isLeapYear(i))

total = total + 366;

else

total = total + 365;

// Add days from Jan to the month prior to the calendar month

for (int i = 1; i < month; i++)

total = total + getNumberOfDaysInMonth(year, i);

return total;

}

/** Get the number of days in a month */

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

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

month == 8 || month == 10 || month == 12)

return 31;

if (month == 4 || month == 6 || month == 9 || month == 11)

return 30;

if (month == 2) return isLeapYear(year) ? 29 : 28;

return 0; // If month is incorrect

}

/** Determine if it is a leap year */

public static boolean isLeapYear(int year) {

return year % 400 == 0 || (year % 4 == 0 && year % 100 != 0);

}

}

用JAVA帮忙编写一个日历查询系统,非常感谢~!

import java.util.Calendar;

import java.util.Scanner;

public class CalendarX {

static Calendar c=Calendar.getInstance();

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

public static void main(String[] args) {

Scanner sn = new Scanner(System.in);

System.out.print("Input year:");

int year=sn.nextInt();

System.out.print("Input month:");

int month=sn.nextInt();

printCalendar(year,month);

}

static void printCalendar(int y,int m){

c.set(Calendar.YEAR, y);

c.set(Calendar.MONTH, m-1);

c.set(Calendar.DATE, 1);

int fd=c.get(Calendar.DAY_OF_WEEK);

int md=c.getActualMaximum(Calendar.DATE);

for(int i=0; i&lt;7; i++)System.out.printf("%5s",wd[i]);System.out.println();

for(int i=0; i&lt;fd; i++)System.out.printf("%5s","");

for(int i=0; i&lt;md; i++){

System.out.printf("%5s",i+1);

if(++fd%7==0)System.out.println();

}

}

}

C语言编程 关于万年历程序的问题

int number=(year-1)+(year-1)/4-(year-1)/100+(year-1)/400+yearDay(year,month,day);

//计算的是这一天是这一年的第几天

number=number%7;

//一个星期有七天,

return number;

//返回为0代表星期天,1代表星期一,.........