java代码写的日历 java编程日历

如何用JAVA写日历?

按照你的要求编写的Java日历验证程序如下

创新互联建站主营衡阳网站建设的网络公司,主营网站建设方案,重庆App定制开发,衡阳h5成都微信小程序搭建,衡阳网站营销推广欢迎衡阳等地区企业咨询

UI.java

import java.util.Scanner;

public class UI {

static Scanner sc=new Scanner(System.in);

public static int askInt(String s){

System.out.print(s);

return sc.nextInt();

}

public static void println(String s){

System.out.println(s);

}

}

EE.java

public class EE {

public void validateDateCore(){

int year =UI.askInt("Enter the year: ");

int month=UI.askInt("Enter the month: ");

int day=UI.askInt("Enter the day: ");

if(year  1){

UI.println("The year is not a valid number.");

return;

}

if(month1 || month12){

UI.println("The month is not a valid number.");

return;

}

int monthDay=0;

switch(month){

case 1:

case 3:

case 5:

case 7:

case 8:

case 10:

case 12:monthDay=31;break;

case 4:

case 6:

case 9:

case 11:monthDay=30;break;

case 2:

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

monthDay=29;

}else{

monthDay=28;

}

break;

}

if(day1 || daymonthDay){

UI.println("The day is not a valid number.");

return;

}else{

UI.println("It is "+day+"/"+month+"/"+year+".");

}

}

public static void main(String[] args) {

new EE().validateDateCore();

}

}

运行结果

java 日历的代码问题

首先,控制台输入肯定要是形如2013-03-06这样的格式,这是SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-DD")所要求的。输入2013-03会进入异常处理提示输入格式不正确。至于打印日历,你可以算出该月的第一号是星期几,然后按顺序排下去,满7天换行就是了

用java写个日历程序怎么写,请给出详细步骤,谢谢

随便做了一个,其实一楼网友说的判断哪些30天,是否闰年什么的没必要,看代码:

package com.baidu.calendar;

import java.awt.BorderLayout;

import java.awt.Color;

import java.awt.FlowLayout;

import java.awt.Font;

import java.awt.GridLayout;

import java.awt.event.ItemEvent;

import java.awt.event.ItemListener;

import java.text.DateFormat;

import java.text.SimpleDateFormat;

import java.util.Calendar;

import javax.swing.JComboBox;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JPanel;

import javax.swing.border.CompoundBorder;

import javax.swing.border.EmptyBorder;

import javax.swing.border.LineBorder;

public class CalendarInterface extends JFrame {

private static final long serialVersionUID = 1L;

private JComboBox yearBox, monthBox;

private static final int YEAR_RANGE = 50; // 年份范围,即往前往后各推多少年

private JPanel topPane, contentPane;

private JPanel bottomPane, bottomTopPane, mainPane;

private JLabel dateLabel;

private boolean init = false;

private Calendar cal;

private static final Calendar NOW = Calendar.getInstance();

private static final String[] DAY_OF_WEEK = {"星期日", "星期一", "星期二",

"星期三", "星期四", "星期五", "星期六"};

private DateFormat df = new SimpleDateFormat("yyyy年MM月");

private static final Color FONT_GRAY = new Color(0xaa, 0xaa, 0xaa);

private static final int DATE_GRAY = -1;

private static final int DATE_RED = 1;

private static final int DATE_BLACK = 0;

public CalendarInterface() {

super("日历");

cal = Calendar.getInstance();

cal.setFirstDayOfWeek(Calendar.SUNDAY);

}

public void launch() {

setVisible(true);

setSize(600, 450);

setDefaultCloseOperation(EXIT_ON_CLOSE);

// 主面板

contentPane = new JPanel(new BorderLayout());

contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));

contentPane.setBackground(Color.WHITE);

// 顶部选择日期和月份的区域

topPane = new JPanel(new FlowLayout(FlowLayout.CENTER, 50, 0)); // 居中对齐,控件间隔50px

topPane.setBorder(new EmptyBorder(0, 0, 10, 0)); // 底部空出10px

topPane.setBackground(Color.WHITE);

// 底部显示星期条和日历列表区域

bottomPane = new JPanel(new BorderLayout());

bottomPane.setBorder(new LineBorder(Color.BLACK, 1));

// 星期条

bottomTopPane = new JPanel(new GridLayout(1, 7));

bottomTopPane.setBackground(new Color(0x55, 0x55, 0x55));

// 日期列表

mainPane = new JPanel();

mainPane.setLayout(new GridLayout(0, 7)); // 列数为7,行数自动填充

for(int i = Calendar.SUNDAY; i = Calendar.SATURDAY; i ++) {

bottomTopPane.add(createDay(DAY_OF_WEEK[i - 1]));

}

bottomPane.add(bottomTopPane, BorderLayout.NORTH); // 星期栏放在顶部

// 年份下拉列表

yearBox = new JComboBox();

int currentYear = cal.get(Calendar.YEAR);

// 年份范围为往前往后各推50年

for(int i = currentYear - YEAR_RANGE; i  currentYear + YEAR_RANGE + 1; i ++) {

yearBox.addItem(i);

}

yearBox.addItemListener(new ItemListener() {

@Override

public void itemStateChanged(ItemEvent e) {

if(ItemEvent.SELECTED == e.getStateChange()) {

reset(); // 选择后刷新布局

}

}

});

yearBox.setSelectedIndex(YEAR_RANGE); // 默认选中当前年份

String months[] = {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"};

// 月份下拉列表

monthBox = new JComboBox(months);

monthBox.addItemListener(new ItemListener() {

@Override

public void itemStateChanged(ItemEvent e) {

if(ItemEvent.SELECTED == e.getStateChange()) {

reset(); //刷新布局

}

}

});

monthBox.setSelectedIndex(cal.get(Calendar.MONTH)); // 选择当前月份

// 显示当前年月的控件

this.dateLabel = new JLabel(df.format(cal.getTime()));

topPane.add(yearBox);

topPane.add(monthBox);

topPane.add(dateLabel);

contentPane.add(topPane, BorderLayout.NORTH);

bottomPane.add(mainPane, BorderLayout.CENTER);

contentPane.add(bottomPane, BorderLayout.CENTER);

setContentPane(contentPane);

validate();

init = true; // 初始化完成

reset(); // 刷新界面

setLocationRelativeTo(null); // 居中显示

}

public static void main(String[] args) {

new CalendarInterface().launch();

}

private void reset() { // 每次年份或月份改变后则日历重新排列

if(!init) { // 若未初始化则返回,避免设置默认年月时调用此方法出错

return;

}

int year = (Integer) yearBox.getSelectedItem();

int month = Integer.parseInt((String) monthBox.getSelectedItem());

// 将日期设置为本月第一天

cal.set(Calendar.YEAR, year);

cal.set(Calendar.MONTH, month - 1);

cal.set(Calendar.DATE, 1);

dateLabel.setText(df.format(cal.getTime())); // 显示年月

mainPane.removeAll(); // 清空日历列表

// 判断本月第一天是星期几,在第一天之前增加空的日历

int startDayOfWeek = cal.get(Calendar.DAY_OF_WEEK);

int i;

// 先设置为本周属于上个月的几天,置灰显示

cal.add(Calendar.DATE, -(startDayOfWeek - Calendar.SUNDAY) - 1);

for(i = Calendar.SUNDAY; i  startDayOfWeek; i ++) {

cal.add(Calendar.DATE, 1);

int date = cal.get(Calendar.DATE);

mainPane.add(createDate(Integer.toString(date), DATE_GRAY));

}

i = startDayOfWeek;

// 重新初始化为本月第一天

cal.set(Calendar.MONTH, month - 1);

cal.set(Calendar.DATE, 1);

int maxDate = cal.getActualMaximum(Calendar.DATE); // 本月最多的天数(不用再去判断是否闰年了)

for(int j = 1; j = maxDate; j ++) {

cal.set(Calendar.DATE, j); // 日期一直自增,用来判断是否是今天

JLabel jlDate = null;

if(isToday()) { // 是今天则高亮显示

jlDate = createDate(Integer.toString(j), DATE_RED);

} else { // 不是今天则显示为普通颜色

jlDate = createDate(Integer.toString(j));

}

mainPane.add(jlDate);

}

// 最后一周把不属于本月的几天用灰色控件填充

int lastDay = cal.get(Calendar.DAY_OF_WEEK);

for(i = lastDay; i  Calendar.SATURDAY; i ++) {

cal.add(Calendar.DATE, 1);

int date = cal.get(Calendar.DATE);

mainPane.add(createDate(Integer.toString(date), DATE_GRAY));

}

mainPane.validate();

}

private JLabel createDate(String date) {

return createDate(date, DATE_BLACK);

}

// 创建日期控件

private JLabel createDate(String date, int dateColor) {

JLabel label = new JLabel(date, JLabel.CENTER);

CompoundBorder border = new CompoundBorder(

new LineBorder(Color.WHITE, 1),

new EmptyBorder(10, 10, 10, 10));

label.setBorder(border);

Font font = new Font("Arial", Font.BOLD, 30);

if(DATE_GRAY == dateColor) { // 如果不是本月则文字置灰

label.setForeground(FONT_GRAY);

} else if(DATE_RED == dateColor) { // 如果是今天则高亮显示

label.setForeground(Color.RED);

}

label.setFont(font);

return label;

}

// 创建星期几的横条

private JLabel createDay(String day) {

JLabel jlDay = new JLabel(day, JLabel.CENTER);

jlDay.setBorder(new EmptyBorder(5, 5, 5, 5));

jlDay.setBackground(Color.GRAY);

jlDay.setForeground(Color.WHITE);

return jlDay;

}

// 判断是否今天

private boolean isToday() {

return cal.get(Calendar.YEAR) == NOW.get(Calendar.YEAR)

 cal.get(Calendar.MONTH) == NOW.get(Calendar.MONTH)

 cal.get(Calendar.DATE) == NOW.get(Calendar.DATE);

}

}

用JAVA做日历,要求源代码

import java.util.Scanner; public class Wan{ public static void main(String[] args){ Scanner name = new Scanner(System.in); System.out.print("请输入要查询的年份:"); int year = name.nextInt(); System.out.print("请输入该年的月份"); int month = name.nextInt(); } //累加 该年至输入的月份 天数 //比如 输入2009年的 3月分 // 那就累加 2009年的1月至 3月1号的总天数 public void sumDay(int year,int month){ int day = 0; int sumDay = 0; for(int i = 1;i=month;i++){ switch(i){ case 1: case 3: case 5: case 7: case 8: case 10: case 12: day = 31; break; case 2: if(year % 4 == 0 || year % 400 == 0 year %100!=0){ day = 29; }else{ day = 28; } break; default: day = 30; } //最后一个月份不要累加 因为我们只是要算到该月的一号就可以了 if(i month){ sumDay += day; } } //累加 2000年到该年的一月一号天数 for(int i = 2000;iyear;i++){ if( i % 4 == 0 || i %400== 0 i % 100 != 0){ sumDay += 366; }else{ sumDay += 365; } } //求该月一号为星期几 int week = sumDay % 7 +1; if(week == 7){ week = 0; } } public void fomatDate(int week,int day){ int g = 0; for(int i = 0;iweek;i++){ System.out.print("\t"); } for(int i = 1;i=day;i++){ System.out.print(i+"\t"); g = week + i; if(g % 7 == 0){ System.out.println(); } } } } 给点分哈 写得好累


网站栏目:java代码写的日历 java编程日历
URL分享:http://scyanting.com/article/ddgsphh.html