当前位置:首页 » 编程语言 » java月历

java月历

发布时间: 2022-05-31 17:04:51

㈠ 用java做日历

import java.util.*;

public class test {
public static void main( String[] args ) {
String[] wd= { "日", "一", "二", "三", "四", "五", "六" };
Scanner s = new Scanner(System.in);
P("请输入要查询的年份:");
int y = s.nextInt();
P("请输入月份:");
int m = s.nextInt();
if(y < 2000 || y > 2010) {
P("不在查询范围之内!");
return;
}

GregorianCalendar g = new GregorianCalendar( y, m-1, 1 );

P( "\n星期\t" );
for ( int j = 0; j < wd.length; ++j )
P( wd[j] + "\t" );
P();
for ( int j = 0; j < g.get( Calendar.DAY_OF_WEEK ); ++j )
P( "\t" );
int thisMonth = g.get( Calendar.MONTH );
for ( int j = 1; j <= 31; ++j ) {
int d = g.get( Calendar.DAY_OF_MONTH );
P( d + "\t" );
if ( g.get( Calendar.DAY_OF_WEEK ) == 7 ) {
P("\n\t");
}
g.add( Calendar.DAY_OF_YEAR, 1 );
if ( g.get( Calendar.MONDAY ) != thisMonth ) {
P("\n\n");
break;
}
}
}

static void P( String s )
{
System.out.print( s );
}
static void P()
{
System.out.println();
}
}

㈡ 用java写一个日历

import java.util.*;

class ViewMonth {

int month;
int year;

ViewMonth(final int displayMonth, final int displayYear) {
month = displayMonth;
year = displayYear;
}

private String checkMonth() {

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

return months[month];
}

private int checkDays() {

int[] numofDays = {
31, 28, 31,
30, 31, 30,
31, 31, 30,
31, 30, 31
};

return numofDays[month];
}

/**
* 使用此方法打印该月的日历.
*/
void printMonth() {

/* 将该月份起始处的天数留空. */
int initialSpaces = 0;

try {
/* 获取月份名称. */
String monthName = checkMonth();
System.out.println();
System.out.println("\t\t\t " + year + " 年 " + monthName );
System.out.println();

} catch ( ae) {
System.out.println("超出范围 ..........");
System.exit(0);
}

GregorianCalendar cal = new GregorianCalendar(year, month, 1);

System.out.println("\t日\t一\t二\t三\t四\t五\t六");
initialSpaces = cal.get(Calendar.DAY_OF_WEEK) - 1;

/* 获取天数. */
int daysInMonth = checkDays();

/* 检查是否为闰年并为二月增加一天. */
if (cal.isLeapYear(cal.get(Calendar.YEAR)) && month == 1) {
++daysInMonth;
}

for (int ctr = 0; ctr < initialSpaces; ctr++) {
System.out.print("\t");
}

for (int ctr = 1; ctr <= daysInMonth; ctr++) {

/* 为单个日期添加空格. */
if (ctr <= 9) {
System.out.print(" ");
}
System.out.print("\t" + ctr);

/* 检查行的末尾. */
if ((initialSpaces + ctr) % 7 == 0) {
System.out.println();
} else {
System.out.print(" ");
}

}
System.out.println();
}
}

class J7上机2 {

protected J7上机2() {
}

public static void main(String[] args) {

int month, year;

if (args.length == 2) {
System.out.println("显示日历");
System.out.println();
int mon = Integer.parseInt(args[0]);
month = mon - 1;
year = Integer.parseInt(args[1]);
} else {
Calendar today = Calendar.getInstance();
month = today.get(Calendar.MONTH);
year = today.get(Calendar.YEAR);
}

ViewMonth mv = new ViewMonth(month, year);
mv.printMonth();

}
}

㈢ java语言编写日历

import java.util.*;
public class calendar
{
public static void main(String[] args)
{
new calendar().makeCalendar();
}
public void makeCalendar()
{
int i;
int j;
int year = 0;
int month = 0;
int week = 0;
int totalDay = 0;

Scanner scanner = new Scanner(System.in);
Calendar ca = Calendar.getInstance();
printAsterisk();
System.out.print("欢 迎 使 用 万 年 历");
printAsterisk();

System.out.print("\n\n请输入年份:");
year = scanner.nextInt();
System.out.print("\n\n请输入月份:");
month = scanner.nextInt() ;

ca.set(year, month - 1,1);
week = ca.get(Calendar.DAY_OF_WEEK)-1;//获取输入月第一天是星期几

if( month != 2)
totalDay = calculatetotalDay(year , month);
else
{
if(judgeLeap_year(year))
totalDay = calculatetotalDay(year , month) + 1;//如果是闰年,加一天
else
totalDay = calculatetotalDay(year , month);
}

System.out.println("\n\n\n星期日\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六");

for(i = 0;i < week;i++)
{
System.out.print("\t");
}
for( i = 1; i < (8 - week);i++)
System.out.print(i + "\t");

for( i = (8 - week),j = 0;i <= totalDay;i++,j++)
{
if(j % 7 == 0)
System.out.println();
System.out.print(i+"\t");
}

}
public void printAsterisk()
{
int i;
for( i = 0 ; i < 18;i++)
System.out.print("*");
}
//获取输入月的天数
public int calculatetotalDay(int year ,int month)
{
int result = 0;

switch (month)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12: result = 31;
break;
case 4:
case 6:
case 9:
case 11:result = 30;
break;
default:result = 28;
break;
}
return result;
}
//判断闰年
public boolean judgeLeap_year(int year)
{
if((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
return true;
else
return false;
}
}

㈣ java如何在窗口中显示日历

MainFrame.java是显示日历程序,Clock.java是日历计算程序(可以不要)。
编译后运行MainFrame这个类即可。

swing窗口显示万年历,jdk1.4以上环境编译运行。
1132133packageorg.test;importjava.awt.BorderLayout;importjava.awt.Color;importjava.awt.GridLayout;importjava.awt.Toolkit;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.sql.Date;importjava.util.Calendar;importjavax.swing.JComboBox;importjavax.swing.JFrame;importjavax.swing.JLabel;importjavax.swing.JPanel;{=-306484324260972141L;JPanelpanel=newJPanel(newBorderLayout());JPanelpanel1=newJPanel();JPanelpanel2=newJPanel(newGridLayout(7,7));JPanelpanel3=newJPanel();JLabel[]label=newJLabel[49];JLabely_label=newJLabel("年份");JLabelm_label=newJLabel("月份");JComboBoxcom1=newJComboBox();JComboBoxcom2=newJComboBox();intre_year,re_month,x_size,y_size;Stringyear_num;Calendarnow=Calendar.getInstance();//实例化CalendarMainFrame(){super("万年历");setSize(300,350);x_size=(int)(Toolkit.getDefaultToolkit().getScreenSize().getWidth());y_size=(int)(Toolkit.getDefaultToolkit().getScreenSize().getHeight());setLocation((x_size-300)/2,(y_size-350)/2);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);panel1.add(y_label);panel1.add(com1);panel1.add(m_label);panel1.add(com2);for(inti=0;i<49;i++){label[i]=newJLabel("",JLabel.CENTER);//将显示的字符设置为居中panel2.add(label[i]);}panel3.add(newClock(this));panel.add(panel1,BorderLayout.NORTH);panel.add(panel2,BorderLayout.CENTER);panel.add(panel3,BorderLayout.SOUTH);panel.setBackground(Color.white);panel1.setBackground(Color.white);panel2.setBackground(Color.white);panel3.setBackground(Color.white);Init();com1.addActionListener(newClockAction());com2.addActionListener(newClockAction());setContentPane(panel);setVisible(true);setResizable(false);}{publicvoidactionPerformed(ActionEventarg0){intc_year,c_month,c_week;c_year=Integer.parseInt(com1.getSelectedItem().toString());//得到当前所选年份c_month=Integer.parseInt(com2.getSelectedItem().toString())-1;//得到当前月份,并减1,计算机中的月为0-11c_week=use(c_year,c_month);//调用函数use,得到星期几Resetday(c_week,c_year,c_month);//调用函数Resetday}}publicvoidInit(){intyear,month_num,first_day_num;Stringlog[]={"日","一","二","三","四","五","六"};for(inti=0;i<7;i++){label[i].setText(log[i]);}for(inti=0;i<49;i=i+7){label[i].setForeground(Color.red);//将星期日的日期设置为红色}for(inti=6;i<49;i=i+7){label[i].setForeground(Color.green);//将星期六的日期设置为绿色}for(inti=1;i<10000;i++){com1.addItem(""+i);}for(inti=1;i<13;i++){com2.addItem(""+i);}month_num=(int)(now.get(Calendar.MONTH));//得到当前时间的月份year=(int)(now.get(Calendar.YEAR));//得到当前时间的年份com1.setSelectedIndex(year-1);//设置下拉列表显示为当前年com2.setSelectedIndex(month_num);//设置下拉列表显示为当前月first_day_num=use(year,month_num);Resetday(first_day_num,year,month_num);}publicintuse(intreyear,intremonth){intweek_num;now.set(reyear,remonth,1);//设置时间为所要查询的年月的第一天week_num=(int)(now.get(Calendar.DAY_OF_WEEK));//得到第一天的星期returnweek_num;}@SuppressWarnings("deprecation")publicvoidResetday(intweek_log,intyear_log,intmonth_log){intmonth_day_score;//存储月份的天数intcount;month_day_score=0;count=1;Datedate=newDate(year_log,month_log+1,1);//nowCalendarcal=Calendar.getInstance();cal.setTime(date);cal.add(Calendar.MONTH,-1);//前个月month_day_score=cal.getActualMaximum(Calendar.DAY_OF_MONTH);//最后一天for(inti=7;i<49;i++){//初始化标签label[i].setText("");}week_log=week_log+6;//将星期数加6,使显示正确month_day_score=month_day_score+week_log;for(inti=week_log;i<month_day_score;i++,count++){label[i].setText(count+"");}}publicstaticvoidmain(String[]args){JFrame.(true);newMainFrame();}}
0414243packageorg.test;importjava.awt.Color;importjava.util.Calendar;importjava.awt.Canvas;importjava.awt.Font;importjava.awt.Graphics;importjava.text.SimpleDateFormat;{=3660124045489727166L;MainFramemf;Threadt;Stringtime;publicClock(MainFramemf){this.mf=mf;setSize(280,40);setBackground(Color.white);t=newThread(this);//实例化线程t.start();//调用线程}publicvoidrun(){while(true){try{Thread.sleep(1000);//休眠1秒钟}catch(InterruptedExceptione){System.out.println("异常");}this.repaint(100);}}publicvoidpaint(Graphicsg){Fontf=newFont("宋体",Font.BOLD,16);SimpleDateFormatSDF=newSimpleDateFormat("yyyy'年'MM'月'dd'日'HH:mm:ss");//格式化时间显示类型Calendarnow=Calendar.getInstance();time=SDF.format(now.getTime());//得到当前日期和时间g.setFont(f);g.setColor(Color.orange);g.drawString(time,45,25);}}

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

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

packagecom..calendar;

importjava.awt.BorderLayout;
importjava.awt.Color;
importjava.awt.FlowLayout;
importjava.awt.Font;
importjava.awt.GridLayout;
importjava.awt.event.ItemEvent;
importjava.awt.event.ItemListener;
importjava.text.DateFormat;
importjava.text.SimpleDateFormat;
importjava.util.Calendar;

importjavax.swing.JComboBox;
importjavax.swing.JFrame;
importjavax.swing.JLabel;
importjavax.swing.JPanel;
importjavax.swing.border.CompoundBorder;
importjavax.swing.border.EmptyBorder;
importjavax.swing.border.LineBorder;

{
=1L;
privateJComboBoxyearBox,monthBox;
privatestaticfinalintYEAR_RANGE=50;//年份范围,即往前往后各推多少年

privateJPaneltopPane,contentPane;
privateJPanelbottomPane,bottomTopPane,mainPane;
privateJLabeldateLabel;

privatebooleaninit=false;
privateCalendarcal;
privatestaticfinalCalendarNOW=Calendar.getInstance();
privatestaticfinalString[]DAY_OF_WEEK={"星期日","星期一","星期二",
"星期三","星期四","星期五","星期六"};

privateDateFormatdf=newSimpleDateFormat("yyyy年MM月");
privatestaticfinalColorFONT_GRAY=newColor(0xaa,0xaa,0xaa);

privatestaticfinalintDATE_GRAY=-1;
privatestaticfinalintDATE_RED=1;
privatestaticfinalintDATE_BLACK=0;

publicCalendarInterface(){
super("日历");
cal=Calendar.getInstance();
cal.setFirstDayOfWeek(Calendar.SUNDAY);
}

publicvoidlaunch(){
setVisible(true);
setSize(600,450);
setDefaultCloseOperation(EXIT_ON_CLOSE);
//主面板
contentPane=newJPanel(newBorderLayout());
contentPane.setBorder(newEmptyBorder(5,5,5,5));
contentPane.setBackground(Color.WHITE);

//顶部选择日期和月份的区域
topPane=newJPanel(newFlowLayout(FlowLayout.CENTER,50,0));//居中对齐,控件间隔50px
topPane.setBorder(newEmptyBorder(0,0,10,0));//底部空出10px
topPane.setBackground(Color.WHITE);

//底部显示星期条和日历列表区域
bottomPane=newJPanel(newBorderLayout());
bottomPane.setBorder(newLineBorder(Color.BLACK,1));
//星期条
bottomTopPane=newJPanel(newGridLayout(1,7));
bottomTopPane.setBackground(newColor(0x55,0x55,0x55));
//日期列表
mainPane=newJPanel();
mainPane.setLayout(newGridLayout(0,7));//列数为7,行数自动填充
for(inti=Calendar.SUNDAY;i<=Calendar.SATURDAY;i++){
bottomTopPane.add(createDay(DAY_OF_WEEK[i-1]));
}
bottomPane.add(bottomTopPane,BorderLayout.NORTH);//星期栏放在顶部

//年份下拉列表
yearBox=newJComboBox();
intcurrentYear=cal.get(Calendar.YEAR);
//年份范围为往前往后各推50年
for(inti=currentYear-YEAR_RANGE;i<currentYear+YEAR_RANGE+1;i++){
yearBox.addItem(i);
}
yearBox.addItemListener(newItemListener(){
@Override
publicvoiditemStateChanged(ItemEvente){
if(ItemEvent.SELECTED==e.getStateChange()){
reset();//选择后刷新布局
}
}
});
yearBox.setSelectedIndex(YEAR_RANGE);//默认选中当前年份

Stringmonths[]={"1","2","3","4","5","6","7","8","9","10","11","12"};
//月份下拉列表
monthBox=newJComboBox(months);
monthBox.addItemListener(newItemListener(){
@Override
publicvoiditemStateChanged(ItemEvente){
if(ItemEvent.SELECTED==e.getStateChange()){
reset();//刷新布局
}
}
});
monthBox.setSelectedIndex(cal.get(Calendar.MONTH));//选择当前月份

//显示当前年月的控件
this.dateLabel=newJLabel(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);//居中显示
}

publicstaticvoidmain(String[]args){
newCalendarInterface().launch();
}

privatevoidreset(){//每次年份或月份改变后则日历重新排列
if(!init){//若未初始化则返回,避免设置默认年月时调用此方法出错
return;
}
intyear=(Integer)yearBox.getSelectedItem();
intmonth=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();//清空日历列表

//判断本月第一天是星期几,在第一天之前增加空的日历
intstartDayOfWeek=cal.get(Calendar.DAY_OF_WEEK);
inti;
//先设置为本周属于上个月的几天,置灰显示
cal.add(Calendar.DATE,-(startDayOfWeek-Calendar.SUNDAY)-1);
for(i=Calendar.SUNDAY;i<startDayOfWeek;i++){
cal.add(Calendar.DATE,1);
intdate=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);
intmaxDate=cal.getActualMaximum(Calendar.DATE);//本月最多的天数(不用再去判断是否闰年了)
for(intj=1;j<=maxDate;j++){
cal.set(Calendar.DATE,j);//日期一直自增,用来判断是否是今天
JLabeljlDate=null;
if(isToday()){//是今天则高亮显示
jlDate=createDate(Integer.toString(j),DATE_RED);
}else{//不是今天则显示为普通颜色
jlDate=createDate(Integer.toString(j));
}
mainPane.add(jlDate);
}
//最后一周把不属于本月的几天用灰色控件填充
intlastDay=cal.get(Calendar.DAY_OF_WEEK);
for(i=lastDay;i<Calendar.SATURDAY;i++){
cal.add(Calendar.DATE,1);
intdate=cal.get(Calendar.DATE);
mainPane.add(createDate(Integer.toString(date),DATE_GRAY));
}
mainPane.validate();
}

privateJLabelcreateDate(Stringdate){
returncreateDate(date,DATE_BLACK);
}
//创建日期控件
privateJLabelcreateDate(Stringdate,intdateColor){
JLabellabel=newJLabel(date,JLabel.CENTER);
CompoundBorderborder=newCompoundBorder(
newLineBorder(Color.WHITE,1),
newEmptyBorder(10,10,10,10));

label.setBorder(border);
Fontfont=newFont("Arial",Font.BOLD,30);
if(DATE_GRAY==dateColor){//如果不是本月则文字置灰
label.setForeground(FONT_GRAY);
}elseif(DATE_RED==dateColor){//如果是今天则高亮显示
label.setForeground(Color.RED);
}
label.setFont(font);
returnlabel;
}

//创建星期几的横条
privateJLabelcreateDay(Stringday){
JLabeljlDay=newJLabel(day,JLabel.CENTER);
jlDay.setBorder(newEmptyBorder(5,5,5,5));
jlDay.setBackground(Color.GRAY);
jlDay.setForeground(Color.WHITE);
returnjlDay;
}

//判断是否今天
privatebooleanisToday(){
returncal.get(Calendar.YEAR)==NOW.get(Calendar.YEAR)
&&cal.get(Calendar.MONTH)==NOW.get(Calendar.MONTH)
&&cal.get(Calendar.DATE)==NOW.get(Calendar.DATE);
}
}

㈥ java制作日历

package com;import java.awt.Color;import java.awt.Font;import java.awt.GridLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.ItemEvent;import java.awt.event.ItemListener;import java.util.Date;import java.util.GregorianCalendar;import javax.swing.JButton;import javax.swing.JComboBox;import javax.swing.JFrame;import javax.swing.JLabel;public class Calender2 extends JFrame implements ActionListener, ItemListener { private static final long serialVersionUID = 1L; public static void main(String args[]) { try { Calender2 frame = new Calender2(); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } private Date date = new Date(); private GregorianCalendar gregorianCalendar = new GregorianCalendar(); private String[] stringWeek = new String[] { "SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT" }; private String[] stringWeekCn = new String[] { "星期天", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" }; private String[] stringMonth = new String[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec" }; private String[] strSysTime = new String[6]; // 存储当前日期信息 private String[] strSysNowTime = new String[6]; // 存储运行时日期信息 private JButton[] buttonDay = new JButton[42]; private JButton[] buttonWeek = new JButton[7]; private JLabel labelMonth = new JLabel(); private JButton buttonToday = new JButton(); private JButton buttonLastMonth = new JButton(); private JButton buttonNextMonth = new JButton(); private JComboBox comboYear = new JComboBox(); private JComboBox comboMonth = new JComboBox(); public Calender2() { super("万年历"); getContentPane().setLayout(new GridLayout(8, 7, 3, 5)); setBounds(250, 200, 530, 360); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); comboYear.setForeground(new Color(0, 0, 255)); comboYear.setFont(new Font("", Font.PLAIN, 14)); for (int y = 1900; y < 2101; y++) { comboYear.addItem(" " + new Integer(y).toString()); } getContentPane().add(comboYear); comboYear.addItemListener(this); final JLabel labelYear = new JLabel(); labelYear.setForeground(Color.BLUE); labelYear.setFont(new Font("新宋体", Font.PLAIN, 14)); getContentPane().add(labelYear); labelYear.setText(" 年"); comboMonth.setForeground(new Color(0, 0, 255)); comboMonth.setFont(new Font("", Font.PLAIN, 14)); for (int m = 1; m < 13; m++) { comboMonth.addItem(" " + new Integer(m).toString()); } getContentPane().add(comboMonth); comboMonth.addItemListener(this); getContentPane().add(labelMonth); labelMonth.setForeground(Color.BLUE); labelMonth.setFont(new Font("新宋体", Font.PLAIN, 14)); labelMonth.setText(" 月"); getContentPane().add(buttonLastMonth); buttonLastMonth.setForeground(Color.BLUE); buttonLastMonth.setFont(new Font("新宋体", Font.PLAIN, 14)); buttonLastMonth.setText("上月"); buttonLastMonth.addActionListener(this); getContentPane().add(buttonToday); buttonToday.setForeground(Color.BLUE); buttonToday.setFont(new Font("新宋体", Font.PLAIN, 14)); buttonToday.setText("今天"); buttonToday.addActionListener(this); getContentPane().add(buttonNextMonth); buttonNextMonth.setForeground(Color.BLUE); buttonNextMonth.setFont(new Font("新宋体", Font.PLAIN, 14)); buttonNextMonth.setText("下月"); buttonNextMonth.addActionListener(this); for (int i = 0; i < 7; i++) { buttonWeek[i] = new JButton(); if (i == 0 || i == 6) { buttonWeek[i].setForeground(Color.RED); } else { buttonWeek[i].setForeground(Color.BLUE); } buttonWeek[i].setFont(new Font("新宋体", Font.PLAIN, 12)); buttonWeek[i].setText(stringWeekCn[i]); getContentPane().add(buttonWeek[i]); } for (int i = 0; i < 42; i++) { buttonDay[i] = new JButton(); buttonDay[i].setText(""); getContentPane().add(buttonDay[i]); } this.setResizable(false); getSysNowTimeInfo(); setNowDate(); setNowDate(); } public void setSysDate(int year, int month) { // 将日期设置为year年month月1日 gregorianCalendar.set(year, month, 1); } public void actionPerformed(ActionEvent ae) { if (ae.getSource() == buttonToday) { setNowDate(); setNowDate(); } else if (ae.getSource() == buttonLastMonth) { setDate(-1); } else { setDate(1); } } public void itemStateChanged(ItemEvent arg0) { setDate(0); } public void getSysNowTimeInfo() { // 得到程序运行时的时间信息并存储在字符串数组strSysNowTime中 date = gregorianCalendar.getTime(); strSysNowTime = (date + "").split(" "); } public void getSysTimeInfo() { // 得到系统当前的时间信息并存储在字符串数组strSysTime中 date = gregorianCalendar.getTime(); strSysTime = (date + "").split(" "); } public int getNowMonth() { int month = 0; for (int i = 0; i < 12; i++) { if (strSysNowTime[1].equalsIgnoreCase(stringMonth[i])) { month = i; break; } } return month; } public int weekStrat(String strWeek) { // 返回字符串strWeek与星期中的第几天匹配,SUN为第一天 int strat = 0; for (int i = 0; i < 7; i++) { if (strWeek.equalsIgnoreCase(stringWeek[i])) { strat = i; break; } } return strat; } public void setNowDate() { // 将时间设置为程序运行时的时间 setSysTime(getNowYear(), getNowMonth()); getSysTimeInfo(); setDayNull(); getDay(getMonthDays(getNowYear(), getNowMonth() - 1), getMonthDays( getNowYear(), getNowMonth()), weekStrat(strSysTime[0]), getNowDay()); comboYear.setSelectedIndex(getNowYear() - 1900); comboMonth.setSelectedIndex(getNowMonth()); } public void setDate(int move) { // 将时间设置为选中的年月增加move个月之后的时间 setSysTime(getYear(), getMonth() + move); getSysTimeInfo(); setDayNull(); getDay(getMonthDays(getYear(), getMonth() + move - 1), getMonthDays( getYear(), getMonth() + move), weekStrat(strSysTime[0]), -1); if (move != 0) { if (getMonth() == 0 && move < 0) { move = 11; comboYear.setSelectedIndex(getYear() - 1901); } else if (getMonth() == 11 && move > 0) { move = -11; comboYear.setSelectedIndex(getYear() - 1899); } else { comboYear.setSelectedIndex(getYear() - 1900); } comboMonth.setSelectedIndex(getMonth() + move); } } public void setSysTime(int year, int month) { gregorianCalendar.set(year, month, 1); } public int getNowYear() { return Integer.parseInt(strSysNowTime[5]); } public int getNowDay() { return Integer.parseInt(strSysNowTime[2]); } public int getYear() { return comboYear.getSelectedIndex() + 1900; } public int getMonth() { return comboMonth.getSelectedIndex(); } public void setDayNull() { for (int d = 0; d < 42; d++) { buttonDay[d].setText(""); } } public void getDay(int lastMonDays, int monthDays, int startWeek, int day) { // 设置日期颜色并打印 for (int d = 0; d < startWeek + 1; d++) { buttonDay[d].setForeground(Color.GRAY); buttonDay[d].setText((lastMonDays - startWeek) + d + 1 + ""); } for (int d = startWeek; d < startWeek + monthDays; d++) { if ((d - startWeek + 1) == day) { buttonDay[d].setForeground(Color.blue); } else if (d % 7 == 0 || d % 7 == 6) { buttonDay[d].setForeground(Color.RED); } else { buttonDay[d].setForeground(Color.BLACK); } buttonDay[d].setText(d - startWeek + 1 + ""); } for (int d = monthDays + startWeek; d < 42; d++) { buttonDay[d].setForeground(Color.GRAY); buttonDay[d].setText(d - (monthDays + startWeek) + 1 + ""); } } public int getMonthDays(int year, int month) { // 返回year年month月的天数 switch (month) { case 3: case 5: case 8: case 10: return 30; case 1: if (gregorianCalendar.isLeapYear(year)) { return 29; } else { return 28; } default: return 31; } }}

㈦ 关于java中输出日历

第一句将用户输入的数字设为日历对象的“年”成员变量,第二句和第三句同样,一个是月份,一个是按照每月第一天开始的日期,第四句用于取得一个默认的日历对象。

㈧ Java中日历类(CalendarClass)的用途

Java中日历类(Calendar类)的用途如下:

Calendar类的静态方法getInstance()可以初始化一个日历对象:Calendar now = Calendar.getInstance();

可以使用下面三个方法把日历定到任何一个时间:

set(intyear,intmonth,intdate);
set(intyear,intmonth,intdate,inthour,intminute);
set(intyear,intmonth,intdate,inthour,intminute,intsecond);

如果想获得年份、月份、小时等信息可以使用:

Now.get(Calendar.Month);//这样的方法0表示一月,1表示二月
get(Calendar.DAY_OF_MONTH);//获得这个月的第几天
get(Calendar.DAY_OF_WEEK);//获得这个星期的第几天
get(Calendar.DAY_OF_YEAR);//获得这个年的第几天
getTimeMillis();//获得当前时间的毫秒表示

1.计算某一月份的最大天数

Calendartime=Calendar.getInstance();
time.clear();
time.set(Calendar.YEAR,year);
time.set(Calendar.MONTH,i-1);//注意,Calendar对象默认一月为0
intday=time.getActualMaximum(Calendar.DAY_OF_MONTH);//本月份的天数


注:在使用set方法之前,必须先clear一下,否则很多信息会继承自系统当前时间
2.Calendar和Date的转化
(1) Calendar转化为Date

Calendarcal=Calendar.getInstance();
Datedate=cal.getTime();


(2) Date转化为Calendar

Datedate=newDate();
Calendarcal=Calendar.getInstance();
cal.setTime(date);


3.格式化输出日期时间

Datedate=newDate();
SimpleDateFormatdf=newSimpleDateFormat("yyyy-MM-ddhh:mm:ss");
System.out.println(df.format(date));

4.计算相隔天数的方法

publicintgetDaysBetween(Calendard1,Calendard2){
if(d1.after(d2)){//
java.util.Calendarswap=d1;
d1=d2;
d2=swap;
}
intdays=d2.get(Calendar.DAY_OF_YEAR)-d1.get(Calendar.DAY_OF_YEAR);
inty2=d2.get(Calendar.YEAR);
if(d1.get(Calendar.YEAR)!=y2){
d1=(Calendar)d1.clone();
do{
days+=d1.getActualMaximum(Calendar.DAY_OF_YEAR);//得到当年的实际天数
d1.add(Calendar.YEAR,1);
}while(d1.get(Calendar.YEAR)!=y2);
}
returndays;
}

㈨ 怎么用java写日历

以下是两个类,请楼主分别存成两个java文件:
其中
MainFrame.java是显示日历程序,Clock.java是日历计算程序。编译后运行MainFrame这个类即可。

1.MainFrame.java
---
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Date;
import java.util.Calendar;

import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class MainFrame extends JFrame {
/** *//**
*
*/
private static final long serialVersionUID = 1L;
JPanel panel = new JPanel(new BorderLayout());
JPanel panel1 = new JPanel();
JPanel panel2 = new JPanel(new GridLayout(7, 7));
JPanel panel3 = new JPanel();
JLabel[] label = new JLabel[49];
JLabel y_label = new JLabel("年份");
JLabel m_label = new JLabel("月份");
JComboBox com1 = new JComboBox();
JComboBox com2 = new JComboBox();
int re_year, re_month;
int x_size, y_size;
String year_num;
Calendar now = Calendar.getInstance(); // 实例化Calendar

MainFrame() {
super("万年历");
setSize(300, 350);
x_size = (int) (Toolkit.getDefaultToolkit().getScreenSize().getWidth());
y_size = (int) (Toolkit.getDefaultToolkit().getScreenSize().getHeight());
setLocation((x_size - 300) / 2, (y_size - 350) / 2);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
panel1.add(y_label);
panel1.add(com1);
panel1.add(m_label);
panel1.add(com2);
for (int i = 0; i < 49; i++) {
label[i] = new JLabel("", JLabel.CENTER);// 将显示的字符设置为居中
panel2.add(label[i]);
}
panel3.add(new Clock(this));
panel.add(panel1, BorderLayout.NORTH);
panel.add(panel2, BorderLayout.CENTER);
panel.add(panel3, BorderLayout.SOUTH);
panel.setBackground(Color.white);
panel1.setBackground(Color.white);
panel2.setBackground(Color.white);
panel3.setBackground(Color.white);
Init();
com1.addActionListener(new ClockAction());
com2.addActionListener(new ClockAction());

setContentPane(panel);
setVisible(true);
setResizable(false);
}

class ClockAction implements ActionListener {
public void actionPerformed(ActionEvent arg0) {
int c_year, c_month, c_week;
c_year = Integer.parseInt(com1.getSelectedItem().toString()); // 得到当前所选年份
c_month = Integer.parseInt(com2.getSelectedItem().toString()) - 1; // 得到当前月份,并减1,计算机中的月为0-11
c_week = use(c_year, c_month); // 调用函数use,得到星期几
Resetday(c_week, c_year, c_month); // 调用函数Resetday
}
}

public void Init() {
int year, month_num, first_day_num;
String log[] = { "日", "一", "二", "三", "四", "五", "六" };
for (int i = 0; i < 7; i++) {
label[i].setText(log[i]);
}
for (int i = 0; i < 49; i = i + 7) {
label[i].setForeground(Color.red); // 将星期日的日期设置为红色
}
for (int i = 6; i < 49; i = i + 7) {
label[i].setForeground(Color.green);// 将星期六的日期设置为绿色
}
for (int i = 1; i < 10000; i++) {
com1.addItem("" + i);
}
for (int i = 1; i < 13; i++) {
com2.addItem("" + i);
}
month_num = (int) (now.get(Calendar.MONTH)); // 得到当前时间的月份
year = (int) (now.get(Calendar.YEAR)); // 得到当前时间的年份
com1.setSelectedIndex(year - 1); // 设置下拉列表显示为当前年
com2.setSelectedIndex(month_num); // 设置下拉列表显示为当前月
first_day_num = use(year, month_num);
Resetday(first_day_num, year, month_num);
}

public int use(int reyear, int remonth) {
int week_num;
now.set(reyear, remonth, 1); // 设置时间为所要查询的年月的第一天
week_num = (int) (now.get(Calendar.DAY_OF_WEEK));// 得到第一天的星期
return week_num;
}

@SuppressWarnings("deprecation")
public void Resetday(int week_log, int year_log, int month_log) {
int month_day_score; // 存储月份的天数
int count;
month_day_score = 0;
count = 1;

Date date = new Date(year_log, month_log + 1, 1); // now
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.MONTH, -1); // 前个月
month_day_score = cal.getActualMaximum(Calendar.DAY_OF_MONTH);// 最后一天

for (int i = 7; i < 49; i++) { // 初始化标签
label[i].setText("");
}
week_log = week_log + 6; // 将星期数加6,使显示正确
month_day_score = month_day_score + week_log;
for (int i = week_log; i < month_day_score; i++, count++) {
label[i].setText(count + "");
}
}

public static void main(String[] args) {
JFrame.(true);
new MainFrame();
}
}
2.Clock.java
-----
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Date;
import java.util.Calendar;

import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

//显示时间的类:Clock

/** *//**
* Clock.java
* Summary 数字时间显示
* Created on
* @author
* remark
*/

import java.awt.Canvas;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.text.SimpleDateFormat;
import java.util.Calendar;
class Clock extends Canvas implements Runnable{
/** *//**
*
*/
private static final long serialVersionUID = 3660124045489727166L;
MainFrame mf;
Thread t;
String time;
public Clock(MainFrame mf){
this.mf=mf;
setSize(280,40);
setBackground(Color.white);
t=new Thread(this); //实例化线程
t.start(); //调用线程
}
public void run(){
while(true){
try{
Thread.sleep(1000); //休眠1秒钟
}catch(InterruptedException e){
System.out.println("异常");
}
this.repaint(100);
}
}
public void paint(Graphics g){
Font f=new Font("宋体",Font.BOLD,16);
SimpleDateFormat SDF=new SimpleDateFormat("yyyy'年'MM'月'dd'日'HH:mm:ss");//格式化时间显示类型
Calendar now=Calendar.getInstance();
time=SDF.format(now.getTime()); //得到当前日期和时间
g.setFont(f);
g.setColor(Color.orange);
g.drawString(time,45,25);
}
}

㈩ Java中解释一些日历类(CalendarClass)中的重要方法

Calendar类(理解)
Calendar类是采用手工的方式取得日期,可以通过此类精确到毫秒,此类的定义如下:
public abstract class Calendar extends Object
implements Serializable, Cloneable, Comparable<Calendar>
这个类本身是一个抽象类,抽象类要想实例化肯定使用子类:GregorianCalendar
package org.lxh.api.datedemo;
import java.util.Calendar;
import java.util.GregorianCalendar;
public class CalendarDemo {
public static void main(String[] args) {
Calendar calendar = new GregorianCalendar();
System.out.println("YEAR: " + calendar.get(Calendar.YEAR));
System.out.println("MONTH: " + (calendar.get(Calendar.MONTH) + 1));
System.out.println("DATE: " + calendar.get(Calendar.DATE));
System.out
.println("HOUR_OF_DAY: " + calendar.get(Calendar.HOUR_OF_DAY));
System.out.println("MINUTE: " + calendar.get(Calendar.MINUTE));
System.out.println("SECOND: " + calendar.get(Calendar.SECOND));
System.out
.println("MILLISECOND: " + calendar.get(Calendar.MILLISECOND));
}
}
但是现在有一个问题,如果每次取时间都按照这种方式取的话,那么得累死,那么能不能设计一个类,可以通过此
类直接取得时间呢,例如:现在给出了如下的一个接口:
package org.lxh.api.datedemo;
public interface DateTime {
/**
*取得日期
* @return 日期的字符串,例如:2009-12-22
*/
public String getDate() ;
/**
*取得日期时间
* @return 日期时间的字符串,例如:2009-12-22 11:06:23.345
*/
public String getDateTime() ;
/**
*取得时间戳
* @return 返回时间戳的字符串,例如:20091222110623345
*/
public String getTimeStamp() ;
}
前面需要补0的问题需要注意,例如:01。
package org.lxh.api.datedemo;
import java.util.Calendar;
import java.util.GregorianCalendar;
public class DateTimeImpl implements DateTime {
private Calendar calendar;
public DateTimeImpl() {
this.calendar = new GregorianCalendar();
}
public String getDate() {
StringBuffer buf = new StringBuffer();
buf.append(calendar.get(Calendar.YEAR)).append("-");
buf.append(this.addZero((calendar.get(Calendar.MONTH) + 1), 2)).append("-");
buf.append(this.addZero(calendar.get(Calendar.DATE), 2));
return buf.toString();
}
public String getDateTime() {
StringBuffer buf = new StringBuffer();
buf.append(calendar.get(Calendar.YEAR)).append("-");
buf.append(this.addZero((calendar.get(Calendar.MONTH) + 1), 2)).append("-");
buf.append(this.addZero(calendar.get(Calendar.DATE), 2)).append(" ");
buf.append(this.addZero(calendar.get(Calendar.HOUR_OF_DAY), 2)).append(":") ;
buf.append(this.addZero(calendar.get(Calendar.MINUTE), 2)).append(":") ;
buf.append(this.addZero(calendar.get(Calendar.SECOND), 2)).append(".") ;
buf.append(this.addZero(calendar.get(Calendar.MILLISECOND), 3)) ;
return buf.toString();
}
@Override
public String getTimeStamp() {
StringBuffer buf = new StringBuffer();
buf.append(calendar.get(Calendar.YEAR));
buf.append(this.addZero((calendar.get(Calendar.MONTH) + 1), 2));
buf.append(this.addZero(calendar.get(Calendar.DATE), 2));
buf.append(this.addZero(calendar.get(Calendar.HOUR_OF_DAY), 2));
buf.append(this.addZero(calendar.get(Calendar.MINUTE), 2)) ;
buf.append(this.addZero(calendar.get(Calendar.SECOND), 2)) ;
buf.append(this.addZero(calendar.get(Calendar.MILLISECOND), 3)) ;
return buf.toString();
}
private String addZero(int num, int len) {
StringBuffer buf = new StringBuffer();
buf.append(num);
while (buf.length() < len) {
buf.insert(0, 0);
}
return buf.toString();
}
}

热点内容
h板电影种子ftp 发布:2025-02-11 09:06:10 浏览:738
c语言数据类型定义 发布:2025-02-11 09:00:38 浏览:237
一个小时如何选择服务器 发布:2025-02-11 08:58:14 浏览:442
网易我的世界服务器推荐国服 发布:2025-02-11 08:56:34 浏览:241
电视父母锁屏密码应该会是什么 发布:2025-02-11 08:36:42 浏览:892
梅花适合用哪些植物进行配置 发布:2025-02-11 08:30:54 浏览:252
安卓手机如何像苹果一样弹窗 发布:2025-02-11 08:26:33 浏览:912
压缩文件扫码 发布:2025-02-11 08:20:55 浏览:258
小米5安卓70怎么分屏 发布:2025-02-11 08:00:58 浏览:140
访问二维码 发布:2025-02-11 08:00:11 浏览:883