當前位置:首頁 » 編程語言 » 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();
}
}

熱點內容
微軟不給源碼 發布:2025-02-11 16:13:37 瀏覽:38
php的get方法 發布:2025-02-11 16:12:30 瀏覽:967
源碼網嘉 發布:2025-02-11 16:07:06 瀏覽:192
免費ftp服務軟體 發布:2025-02-11 15:58:06 瀏覽:866
大櫻桃建園為什麼要配置授粉樹 發布:2025-02-11 15:58:00 瀏覽:629
五菱宏光s頂配有哪些配置 發布:2025-02-11 15:50:57 瀏覽:287
華為8加128配置有哪些 發布:2025-02-11 15:48:20 瀏覽:580
壓縮機三轉子 發布:2025-02-11 15:45:54 瀏覽:828
linux操作系統shell 發布:2025-02-11 15:45:53 瀏覽:339
安卓模擬器如何選擇安裝 發布:2025-02-11 15:34:26 瀏覽:177