本文目录一览:
java 实现万年历
首先你要明白1900年一月一日是星期一
import java.util.*;
public class WanNianLi{
public static void main(String args[]){
Scanner input = new Scanner(System.in);
System.out.print("请输入年份:");
int year = input.nextInt();
System.out.print("请输入月份:");
int month = input.nextInt();
int totalDays = 1, monthDays = 0;
// 计算总天数
for(int i = 1900; i < year; i++){
if((i % 4 == 0 && i % 100 != 0) || (i % 400 == 0)){
totalDays += 366;
} else {
totalDays += 365;
}
}
for(int passedMonth = 1; passedMonth <= month; passedMonth++){
if(passedMonth == 1 || passedMonth == 3 || passedMonth == 5 || passedMonth == 7 || passedMonth == 8 || passedMonth == 10 || passedMonth == 12){
monthDays = 31;
} else if(passedMonth == 2){
if((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)){
monthDays = 29;
} else {
monthDays = 28;
}
} else {
monthDays = 30;
}
if(passedMonth < month){
totalDays += monthDays;
}
}
// 打印格式,对齐
System.out.println("星期天\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六");
int temp = (totalDays % 7);
for(int p = 0; p < temp; p++){
System.out.print("\t");
}
for(int w = 1; w <= monthDays; w++){
System.out.print(w + "\t");
if((totalDays + w) % 7 == 0){
System.out.println();
}
}
}
}
java控制台万年历
JDK提供的日期类已经够用了。给你贴一个程序,你把年份,月份,日期(你可以固定为1)输入到开始的三个参数就可以了。
import java.util.*;
class TestDemo {
public static void main(String[] args) {
int year = 2012;
int month = 7;
int day = 16;
Calendar calendar = Calendar.getInstance(); // 获得一个日历
calendar.set(year, month - 1, day); // 设置当前时间,月份是从0月开始计算
int number = calendar.get(Calendar.DAY_OF_WEEK); // 星期表示1-7,是从星期日开始
String[] str = {"", "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};
System.out.println(str[number]);
}
}
用java语言编写一个万年历程序,要求只显示阳历、节日、还有农历年、闰年
/**
* @(#)AidyCalender.java
*
* @author
* @version 1.00 2008/7/19
*/
import java.awt.*;
import java.awt.event.*;
import java.lang.StringBuffer;
import javax.swing.*;
import java.util.*;
import javax.swing.Timer;
import javax.swing.border.*;
public class AidyCalender extends JFrame implements ActionListener, ItemListener {
Date date = new Date();
private GregorianCalendar gregorianCalendar = new GregorianCalendar();
// 定义中英文字符数组存储星期信息,用于转换显示
private String[] stringWeekEn = new String[] { "SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT" };
private String[] stringWeekCn = new String[] { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" };
// 定义存储月份的信息数组,用于转换显示方示
private String[] stringMonthEn = new String[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec" };
private String[] stringMonthCn = { "一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月" };
private String[] sysNowTime = new String[6]; // sysNowTime 用于存储系统时间的变量
private String[] sysRunTime = new String[6];
private JLabel[] labelWeek = new JLabel[7];
private JLabel[] labelDay = new JLabel[42];
private JLabel labelTime = new JLabel();
private JPanel panel1 = new JPanel();
private JPanel panel2 = new JPanel();
private JPanel panel3 = new JPanel();
private JComboBox combo1 = new JComboBox();
private JComboBox combo2 = new JComboBox();
private JButton buttonToday = new JButton();
private Border border = BorderFactory.createRaisedBevelBorder();
private Border border1 = BorderFactory.createLineBorder(Color.cyan, 3);
public AidyCalender(String title) {
super(title);
for (int y = 1900; y < 2101; y++) {
combo1.addItem(" " + new Integer(y).toString() + "年");
}
for (int m = 0; m < 12; m++) {
combo2.addItem(" " + stringMonthCn[m]);
}
buttonToday.setText("今 天");
setLayout(new FlowLayout());
add(panel1);
add(panel2);
add(panel3);
panel1.setLayout(new GridLayout(1, 3, 10, 0));
panel1.add(combo1);
combo1.addItemListener(this);
panel1.add(combo2);
combo2.addItemListener(this);
panel1.add(buttonToday);
buttonToday.addActionListener(this);
labelTime.setFont(new Font("宋体", Font.PLAIN, 16));
labelTime.setForeground(Color.MAGENTA);
panel1.add(labelTime);
Timer time = new Timer(1000, new TimerListener());
time.addActionListener(new TimerListener);
time.start();
panel2.setLayout(new GridLayout(7, 7, 0, 10));
panel2.setBackground(Color.white);
for (int i = 0; i < 7; i++) {
labelWeek[i] = new JLabel();
labelWeek[i].setHorizontalAlignment(0);
if (i == 0 || i == 6) {
labelWeek[i].setBackground(Color.blue);
labelWeek[i].setForeground(Color.RED);
labelWeek[i].setFont(new Font("黑体", Font.BOLD, 14));
} else {
labelWeek[i].setForeground(Color.BLACK);
labelWeek[i].setFont(new Font("新宋体", Font.PLAIN, 14));
}
labelWeek[i].setText(stringWeekCn[i]);
panel2.add(labelWeek[i]);
}
for (int i = 0; i < 42; i++) {
labelDay[i] = new JLabel();
labelDay[i].setHorizontalAlignment(0);
labelDay[i].setText("");
panel2.add(labelDay[i]);
}
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
setSize(300, 300);
setBounds(250, 200, 400, 360);
setVisible(true);
setResizable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
getSysDate();
setNowDate();
}
public void actionPerformed(ActionEvent ae) {
if (ae.getSource() == buttonToday) {
setNowDate();
}
}
public void itemStateChanged(ItemEvent aa) {
setChangeDate();
}
public int turnWeek(String week) {
int i;
for (i = 0; i < 7; i++)
if (week.equalsIgnoreCase(stringWeekEn[i]))
break;
return i;
}
public int turnMonth(String month) {
int i;
for (i = 0; i < 12; i++)
if (month.equalsIgnoreCase(stringMonthEn[i]))
break;
return i;
}
public void setNowDate() {
setSysDate(getNowYear(), getNowMonth());
getSysRunDate();
setDateNull();
combo1.setSelectedIndex(getShowYear() - 1900);
combo2.setSelectedIndex(getShowMonth());
setDays(getMonthDays(getNowYear(), getNowMonth()), getInitWeek(sysRunTime[0]), getNowDay());
}
public void setSysDate(int year, int month) {
gregorianCalendar.set(year, month, 1);
}
public void setDateNull() {
for (int i = 0; i < 42; i++) {
labelDay[i].setText("");
}
}
public void setChangeDate() {
setSysDate(getComboYear(), getComboMonth());
getSysRunDate();
setDateNull();
setDays(getMonthDays(getComboYear(), getComboMonth()), getInitWeek(sysRunTime[0]), -1);
}
public int getMonthDays(int year, int month) {
switch (month) {
case 3:
case 5:
case 8:
case 10:
return 30; // 小月返回30天
case 1:
if (gregorianCalendar.isLeapYear(year)) {
return 29;
} else {
return 28;
} // 闰年的二月返回29天,平年返回28天
default:
return 31; // 大月返回31天
}
}
public void getSysDate() {
date = gregorianCalendar.getTime();
sysNowTime = (date.toString()).split(" ");
}
public void getSysRunDate() {
date = gregorianCalendar.getTime();
sysRunTime = (date.toString()).split(" ");
}
public int getComboYear() {
return combo1.getSelectedIndex() + 1900;
}
public int getComboMonth() {
return combo2.getSelectedIndex();
}
public int getInitWeek(String initWeek) {
int nowWeek = 0;
for (int i = 0; i < 7; i++) {
if (initWeek.equalsIgnoreCase(stringWeekEn[i])) {
nowWeek = i;
break;
}
}
return nowWeek;
}
public int getNowYear() {
return Integer.parseInt(sysNowTime[5]);
}
public int getNowMonth() {
int nowMonth = 0;
for (int i = 0; i < 12; i++) {
if (sysNowTime[1].equalsIgnoreCase(stringMonthEn[i])) {
nowMonth = i;
break;
}
}
return nowMonth;
}
public int getNowDay() {
return Integer.parseInt(sysNowTime[2]);
}
public Integer getShowYear() {
return Integer.parseInt(sysNowTime[5]);
}
public Integer getShowMonth() {
return turnMonth(sysNowTime[1]);
}
public void setDays(int monthDays, int initWeek, int day) {
setDateNull();
for (int i = initWeek; i < initWeek + monthDays + 1; i++) {
if ((i - initWeek + 1) == day) {
labelDay[i].setBorder(border1);
labelDay[i].setForeground(Color.BLUE);
labelDay[i].setFont(new Font("黑体", Font.BOLD, 20));
} else if ((i % 7 == 0) || (i % 7 == 6)) {
labelDay[i].setForeground(Color.RED);
} else {
labelDay[i].setForeground(Color.BLACK);
}
labelDay[i].setText(String.valueOf(i - initWeek + 1));
}
for (int i = initWeek + monthDays; i < 42; i++) {
labelDay[i].setText("");
}
}
class TimerListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
GregorianCalendar g = new GregorianCalendar();
String clock = new String((g.getTime().toString().split(" "))[3]);
labelTime.setText(clock);
}
}
public static void main(String args[]) {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Exception e) {
throw new RuntimeException(e);
}
AidyCalender var = new AidyCalender("万年历程序--Aidy");
}
}
本文来自CSDN博客,转载请标明出处:
如何用java做万年历
import java.util.Calendar;
public class DateBean {
private Calendar calendar = Calendar.getInstance();
public DateBean(int year, int month, int date) {
calendar.set(year, month - 1, date);
}
/*
* 获取月份中的第一个的星期数
* 1-7星期日到星期六
* @return int
*/
public int getFistWeek() {
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH);
calendar.set(year, month, 1);
return calendar.get(Calendar.DAY_OF_WEEK);
}
/*
* 当月最大天数
* @return int
*/
public int getMaxDate() {
int maxDate = calendar.getActualMaximum(Calendar.DATE);
return maxDate;
}
public void showCalendar() {
System.out.println("日\t一\t二\t三\t四\t五\t六");
int min_week = getFistWeek();
int maxDate = getMaxDate();
int tempDate = 0;
// 共有几周
int rowsCount = (maxDate - (7 - min_week)) / 7;
if ((maxDate - (7 - min_week)) % 7 == 0) {
rowsCount += 1;
} else {
rowsCount += 2;
}
for (int i = 0; i < rowsCount; i++) {
int j = 0;
if (i == 0) {
j = min_week - 1;
for (int o = 0; o < min_week - 1; o++) {
System.out.print(" \t");
}
}
for (; j < 7; j++) {
if (tempDate >= maxDate) {
break;
}
tempDate++;
System.out.print(tempDate + "\t");
}
System.out.println();
}
}
public static void main(String[] args) {
DateBean dateBean = new DateBean(2010, 11, 19);
dateBean.showCalendar();
}
}
这个修改一下应该可以!!!