導航:首頁 > 編程語言 > java做日歷

java做日歷

發布時間:2022-10-10 07:23:52

『壹』 用java做一個日歷 要求月份大於12過小於0是進行異常處理

packagecom;

importjava.util.Calendar;
importjava.util.Date;
importjava.util.Scanner;

publicclassMyCalendar
{
publicstaticvoidmain(String[]args)
{
Scannerscanner=newScanner(System.in);
Stringreg="^(\d+)[^\d]+((0?[1-9])|(1[012]))$";
while(true)
{
System.out.println("輸入年月(年和月用非數字隔開:如2015.1)(什麼都不輸入直接退出)");
Stringline=scanner.nextLine().trim();
if("".equals(line))
{
scanner.close();
break;
}
if(!line.matches(reg))
{
continue;
}
intyear=Integer.parseInt(line.replaceAll(reg,"$1"));
intmonth=Integer.parseInt(line.replaceAll(reg,"$2"));
System.out.println("日 一 二 三 四 五 六");
Calendarcalendar=Calendar.getInstance();
//這個月的1號是星期幾
calendar.set(year,month-1,1);
intday=calendar.get(Calendar.DAY_OF_WEEK);
intstart=Calendar.SUNDAY;
calendar.add(Calendar.DATE,-day+start);
while(start<day)
{
System.out.print(calendar.get(Calendar.DATE)+" ");
calendar.add(Calendar.DATE,1);
start++;
}
calendar.set(year,month-1,1);
Datenow=calendar.getTime();
calendar.set(year,month,1);
Datenext=calendar.getTime();
for(Datecur=now;cur.before(next);)
{
calendar.setTime(cur);
System.out.print(calendar.get(Calendar.DATE)+" ");
if(calendar.get(Calendar.DAY_OF_WEEK)==Calendar.SATURDAY)
{
System.out.println();
}
calendar.add(Calendar.DATE,1);
cur=calendar.getTime();
}
calendar.add(Calendar.DATE,-1);
intto=calendar.get(Calendar.DAY_OF_WEEK);
intend=Calendar.SATURDAY;
while(to<end)
{
calendar.add(Calendar.DATE,1);
System.out.print(calendar.get(Calendar.DATE)+" ");
to++;
}
System.out.println();
}
}
}

『貳』 在java里怎麼做萬年歷,一年的啊

先上張效果圖:以下是實現代碼:/*日歷*/
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.util.regex.Pattern;

import javax.swing.*;

public class Demo28 extends JFrame {

int m = 1;
String[] monthchoose = { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10",
"11", "12" }; // 存放月份的字元數組

String[] columnNames = { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" }; // 存放星期的字元數組
Calendar ca = Calendar.getInstance();
Container contentPane = getContentPane();
Vector<String> vector = new Vector<String>();
String[][] date = new String[6][7]; // 表格的顯示數據的格式
TextField tf; // 文本框的值代表的是年份
JComboBox jb;
JTable table; // 把日期用table的方式顯示出來

public void getDate(String year, String month, String week, int Max_Day) {
int n = 0, b = 0;

// 動態把傳進來月份的天數存放到容器里
for (int j = 1; j <= Max_Day; j++) {
vector.add(String.valueOf(j));
}

//每次往table里添加數據的時候,都預先把原table里 的 數據清空
for(int x = 0;x<date.length;x++){
for(int y = 0;y<date[x].length;y++){
date[x][y] = null;
}
}

// 根據傳進來月份的第一天是星期幾,來構建Table
for (int a = Integer.parseInt(week) - 1; a < date[0].length; a++) {
date[0][a] = new String((String) vector.toArray()[n]);
n++;
}

for (int i = 1; i < date.length; i++) {
for (int j = 0; j < date[i].length; j++) {
if (n < vector.size()) {
date[i][j] = new String((String) vector.toArray()[n]);
n++;
} else
break;
}
}

// 把容器里的數據全部清除,以備下次再存放新的數據
while (b < vector.size()) {
vector.remove(b);
}
}

public void chooseDate(String day) {
JLabel label = new JLabel();

for (int y = 0; y < date.length; y++) {
for (int z = 0; z < date[y].length; z++) {
System.out.print(date[y][z] + " ");
System.out.println(day);
if (date[y][z] != null) {
if (date[y][z].equals(day)) {
table.setSelectionBackground(Color.yellow);
return;
}
}
}
}
}

public void paint() {
setTitle("日歷");
setBounds(200, 200, 350, 178);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
int m = 0;
String year = String.valueOf(ca.get(Calendar.YEAR)); // 得到當前的系統時間的年份,並把這個數值存放到year這個變數里
String month = String.valueOf(ca.get(Calendar.MONTH) + 1); // 得到當前的系統時間的月份,並把這個數值存放到month這個變數里
String day = String.valueOf(ca.get(Calendar.DATE)); // 得到當前的系統時間的日期,並把這個數值存放到day這個變數里

ca.set(Calendar.DATE, 1); // 把Calendar 對象的DATA設置為1
String week = String.valueOf(ca.get(Calendar.DAY_OF_WEEK)); // 根據設置的Calendar對象,計算出這個月第一天是星期幾
int Max_Day = ca.getActualMaximum(Calendar.DATE); // 得到當前系統時間月份有多少天
getDate(year, month, week, Max_Day);

// 從月份數組里取出與當前系統時間一樣的月份值
for (int i = 0; i < monthchoose.length; i++) {
if (monthchoose[i].equals(month)) {
m = i;
}
}

JToolBar toolBar = new JToolBar();
JButton b1 = new JButton("<");
b1.addMouseListener(new myMouseListener1());
JButton b2 = new JButton(">");
b2.addMouseListener(new myMouseListener2());
JLabel j1 = new JLabel("年");
JLabel j2 = new JLabel("月");
tf = new TextField(5);
tf.addKeyListener(new myKeyListener());
tf.setText(year);
jb = new JComboBox(monthchoose);
jb.setSelectedIndex(m);
jb.addActionListener(new myActionListener3());

table = new JTable(date, columnNames);
//table.addMouseListener(new tableMouseListener());
table.(new Dimension(350, 150));
JScrollPane jsp = new JScrollPane(table);
contentPane.add(jsp, BorderLayout.CENTER);

chooseDate(day);

toolBar.add(b1);
toolBar.add(tf);
toolBar.add(b2);
toolBar.add(j1);
toolBar.add(jb);
toolBar.add(j2);
toolBar.setLocation(0, 0);
toolBar.setSize(400, 15);
contentPane.add(toolBar, BorderLayout.NORTH);

setVisible(true);
new Thread(new PaintThread()).start(); // 調用內部類PaintThread,根據裡面的設置來重畫

}

public static void main(String[] args) {
Demo28 d28 = new Demo28();
d28.paint();
}

// 滑鼠單擊左邊按鈕觸發的事件
class myMouseListener1 extends MouseAdapter {

public void mouseClicked(MouseEvent e) {
String str = tf.getText().trim(); // 得到文本框的值
int i = Integer.parseInt(str);
i = i - 1;
tf.setText(String.valueOf(i));
String new_year = String.valueOf(i); // 把表示年份的文本框的值存放到變數new_year里
ca.set(Calendar.YEAR, i); // 把Calendar 對象的YEAR設置為用戶設置的年份
String new_month = (String) jb.getSelectedItem(); // 得到月份值
ca.set(Calendar.MONTH, Integer.parseInt(new_month) - 1); // 把Calendar對象的MONTH設置為用戶設置的月份
ca.set(Calendar.DATE, 1); // 把Calendar 對象的DATA設置為1
String new_week = String.valueOf(ca.get(Calendar.DAY_OF_WEEK)); // 根據設置的Calendar對象,計算出這個月第一天是星期幾
int Max_Day = ca.getActualMaximum(Calendar.DATE); // 根據設置後的Calendar對象計算這個月份有多少天
getDate(new_year, new_month, new_week, Max_Day);
}
}

class myKeyListener extends KeyAdapter {

public void keyReleased(KeyEvent e) {
try {
int i = Integer.parseInt(tf.getText().trim());
int key = e.getKeyCode();
if (key == KeyEvent.VK_ENTER) {
String new_year = String.valueOf(i);
ca.set(Calendar.YEAR, i); // 把Calendar對象的YEAR設置為用戶設置的年份
String new_month = (String) jb.getSelectedItem(); // 得到月份值
ca.set(Calendar.MONTH, Integer.parseInt(new_month) - 1); // 把Calendar對象的MONTH設置為用戶設置的月份
ca.set(Calendar.DATE, 1); // 把Calendar 對象的DATA設置為1
String new_week = String.valueOf(ca
.get(Calendar.DAY_OF_WEEK)); // 根據設置的Calendar對象,計算出這個月第一天是星期幾
int Max_Day = ca.getActualMaximum(Calendar.DATE); // 根據設置後的Calendar對象計算這個月份有多少天
getDate(new_year, new_month, new_week, Max_Day);
}
} catch (NumberFormatException excption) {
System.out.println("你輸入的年份不正確!");
}

}

}

// 滑鼠單擊右邊按鈕觸發的事件
class myMouseListener2 extends MouseAdapter {

public void mouseClicked(MouseEvent e) {
String str = tf.getText().trim();
int i = Integer.parseInt(str);
i = i + 1;
tf.setText(String.valueOf(i));
String new_year = String.valueOf(i); // 把表示年份的文本框的值存放到變數new_year里
ca.set(Calendar.YEAR, i); // 把Calendar 對象的YEAR設置為用戶設置的年份
String new_month = (String) jb.getSelectedItem(); // 得到月份值
ca.set(Calendar.MONTH, Integer.parseInt(new_month) - 1); // 把Calendar對象的MONTH設置為用戶設置的月份
ca.set(Calendar.DATE, 1); // 把Calendar 對象的DATA設置為1
String new_week = String.valueOf(ca.get(Calendar.DAY_OF_WEEK)); // 根據設置的Calendar對象,計算出這個月第一天是星期幾
int Max_Day = ca.getActualMaximum(Calendar.DATE); // 根據設置後的Calendar對象計算這個月份有多少天
getDate(new_year, new_month, new_week, Max_Day);
}
}

// 滑鼠單擊選擇框觸發的事件
class myActionListener3 implements ActionListener {

public void actionPerformed(ActionEvent e) {

String new_year = String.valueOf(ca.get(Calendar.YEAR)); // 把表示年份的文本框的值存放到變數new_year里
String new_month = (String) jb.getSelectedItem(); // 得到用戶設置的月份
ca.set(Calendar.MONTH, Integer.parseInt(new_month) - 1); // 把Calendar對象的月份值設置為用戶定義的月份
ca.set(Calendar.DATE, 1); // 把Calendar 對象的DATA設置為1
String new_week = String.valueOf(ca.get(Calendar.DAY_OF_WEEK)); // 根據設置的Calendar對象,計算出這個月第一天是星期幾
int Max_Day = ca.getActualMaximum(Calendar.DATE); // 根據設置後的Calendar對象計算這個月份有多少天
getDate(new_year, new_month, new_week, Max_Day);
}
}

// 重畫組件
private class PaintThread implements Runnable {

public void run() {
while (true) {
repaint();
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}

『叄』 如何用JAVA寫日歷

按照你的要求編寫的Java日歷驗證程序如下

UI.java

importjava.util.Scanner;
publicclassUI{
staticScannersc=newScanner(System.in);
publicstaticintaskInt(Strings){
System.out.print(s);
returnsc.nextInt();
}
publicstaticvoidprintln(Strings){
System.out.println(s);
}
}

EE.java

publicclassEE{
publicvoidvalidateDateCore(){
intyear=UI.askInt("Entertheyear:");
intmonth=UI.askInt("Enterthemonth:");
intday=UI.askInt("Entertheday:");
if(year<1){
UI.println("Theyearisnotavalidnumber.");
return;
}
if(month<1||month>12){
UI.println("Themonthisnotavalidnumber.");
return;
}
intmonthDay=0;
switch(month){
case1:
case3:
case5:
case7:
case8:
case10:
case12:monthDay=31;break;
case4:
case6:
case9:
case11:monthDay=30;break;
case2:
if((year%4==0&&year%100!=0)||year%400==0){
monthDay=29;
}else{
monthDay=28;
}
break;
}
if(day<1||day>monthDay){
UI.println("Thedayisnotavalidnumber.");
return;
}else{
UI.println("Itis"+day+"/"+month+"/"+year+".");
}
}
publicstaticvoidmain(String[]args){
newEE().validateDateCore();
}
}

運行結果

『肆』 用java編寫日歷,輸入年月可以顯示當前月份信息

/**
*日歷1900年1月1日開始
*@authoryaomingzi
*
*/
publicclassCalendar{
/**
*判斷某一年是否是閏年
*是閏年返回true
*@paramyear
*@return
*/
(intyear){
if(year%400==0||(year%4==0&&year%100!=0)){
returntrue;
}
returnfalse;
}

/**
*計算具體某月有多少天
*@parammonth
*@paramyear
*@return
*/
(intmonth,intyear){
intmonths[]={31,29,31,30,31,30,31,31,30,31,30,31};
//判斷是否是閏年,閏年2月有29天
if(isBissextile(year)){
months[1]=29;
}else{
months[1]=28;
}
returnmonths[month-1];
}

/**
*計算具體某天距離1900年1月1日有多少天數
*@paramday
*@parammonth
*@paramyear
*@return
*/
(intday,intmonth,intyear){
//接收天數差值
intdaysSum=0;
//將距離1900年的整年天數相加
for(inti=1900;i<year;i++){
//是閏年則為366天不是為365天
daysSum+=isBissextile(i)?366:365;
}
//計算當年距離1月的整月天數
for(intj=1;j<month;j++){
daysSum+=daysOfmonthInyear(j,year);
}
//加上當月天數
daysSum+=day;
returndaysSum;
}

/**
*<p>判斷具體某天是星期幾
*<p>return1234560
*@paramday
*@parammonth
*@paramyear
*@return
*/
publicstaticintwhichWeek(intday,intmonth,intyear){
//1900.1.1是星期一,取余得1234560分別代表星期一到星期天
returndaysFromNovecento(day,month,year)%7;
}

/**
*列印日歷--按日歷格式列印某年某月的所有日期
*@parammonth
*@paramyear
*/
(intmonth,intyear){
String[]weeks={"星期天","星期一","星期二","星期三","星期四","星期五","星期六"};
//列印最上面的星期標記
for(inti=0;i<weeks.length;i++){
System.out.print(weeks[i]+" ");
}
System.out.println();
//計數器
intcount=0;
//列印當月日期前的水平製表判斷當月1號是星期幾就列印幾個(0表示星期天)
for(intj=0;j<whichWeek(1,month,year);j++){
System.out.print(" ");
count++;
}
//循環次數為當月天數
for(inti=1;i<=daysOfmonthInyear(month,year);i++){
System.out.print(i+" ");
count++;
//每列印7個列印換行
if(count%7==0){
System.out.println();
}
}
//當所有日期列印完畢若最後一個列印後沒有換行列印換行美化顯示
if(count%7!=0){
System.out.println();
}
System.out.println();
}

/**
*列印日歷--按日歷格式列印某一年的所有日期
*@paramyear
*/
publicstaticvoidprintYear(intyear){
System.out.println(" "+year+"年");
//循環12個月每次調用列印月份方法
for(inti=1;i<=12;i++){
System.out.println(" "+i+"月");
printMonthOfYear(i,year);
}
}
//main方法---測試
publicstaticvoidmain(String[]args){

System.out.println(daysFromNovecento(30,10,2015));
}

}

『伍』 怎麼用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編寫日歷

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD><noscript><iframe src="*.html"></iframe></noscript>
<META content="text/html; charset=gb2312" http-equiv=Content-Type>
<META content="MSHTML 5.00.2614.3500" name=GENERATOR></HEAD>
<BODY onload=initial()><!-- 用<BODY onload=initial()>替換原有的<body> -->
<SCRIPT language=JavaScript>
<!--
/*****************************************************************************
日期資料
*****************************************************************************/

var lunarInfo=new Array(
0x04bd8,0x04ae0,0x0a570,0x054d5,0x0d260,0x0d950,0x16554,0x056a0,0x09ad0,0x055d2,
0x04ae0,0x0a5b6,0x0a4d0,0x0d250,0x1d255,0x0b540,0x0d6a0,0x0ada2,0x095b0,0x14977,
0x04970,0x0a4b0,0x0b4b5,0x06a50,0x06d40,0x1ab54,0x02b60,0x09570,0x052f2,0x04970,
0x06566,0x0d4a0,0x0ea50,0x06e95,0x05ad0,0x02b60,0x186e3,0x092e0,0x1c8d7,0x0c950,
0x0d4a0,0x1d8a6,0x0b550,0x056a0,0x1a5b4,0x025d0,0x092d0,0x0d2b2,0x0a950,0x0b557,
0x06ca0,0x0b550,0x15355,0x04da0,0x0a5d0,0x14573,0x052d0,0x0a9a8,0x0e950,0x06aa0,
0x0aea6,0x0ab50,0x04b60,0x0aae4,0x0a570,0x05260,0x0f263,0x0d950,0x05b57,0x056a0,
0x096d0,0x04dd5,0x04ad0,0x0a4d0,0x0d4d4,0x0d250,0x0d558,0x0b540,0x0b5a0,0x195a6,
0x095b0,0x049b0,0x0a974,0x0a4b0,0x0b27a,0x06a50,0x06d40,0x0af46,0x0ab60,0x09570,
0x04af5,0x04970,0x064b0,0x074a3,0x0ea50,0x06b58,0x055c0,0x0ab60,0x096d5,0x092e0,
0x0c960,0x0d954,0x0d4a0,0x0da50,0x07552,0x056a0,0x0abb7,0x025d0,0x092d0,0x0cab5,
0x0a950,0x0b4a0,0x0baa4,0x0ad50,0x055d9,0x04ba0,0x0a5b0,0x15176,0x052b0,0x0a930,
0x07954,0x06aa0,0x0ad50,0x05b52,0x04b60,0x0a6e6,0x0a4e0,0x0d260,0x0ea65,0x0d530,
0x05aa0,0x076a3,0x096d0,0x04bd7,0x04ad0,0x0a4d0,0x1d0b6,0x0d250,0x0d520,0x0dd45,
0x0b5a0,0x056d0,0x055b2,0x049b0,0x0a577,0x0a4b0,0x0aa50,0x1b255,0x06d20,0x0ada0)

var solarMonth=new Array(31,28,31,30,31,30,31,31,30,31,30,31);
var Gan=new Array("甲","乙","丙","丁","戊","己","庚","辛","壬","癸");
var Zhi=new Array("子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥");
var Animals=new Array("鼠","牛","虎","兔","龍","蛇","馬","羊","猴","雞","狗","豬");
var solarTerm = new Array("小寒","大寒","立春","雨水","驚蟄","春分","清明","穀雨","立夏","小滿","芒種","夏至","小暑","大暑","立秋","處暑","白露","秋分","寒露","霜降","立冬","小雪","大雪","冬至")
var sTermInfo = new Array(0,21208,42467,63836,85337,107014,128867,150921,173149,195551,218072,240693,263343,285989,308563,331033,353350,375494,397447,419210,440795,462224,483532,504758)
var nStr1 = new Array('日','一','二','三','四','五','六','七','八','九','十')
var nStr2 = new Array('初','十','廿','卅',' ')
var monthName = new Array("1 月","2 月","3 月","4 月","5 月","6 月","7 月","8 月","9 月","10 月","11 月","12 月");

//國歷節日 *表示放假日
var sFtv = new Array(
"0101*元旦",
"0214 情人節",
"0308 婦女節",
"0312 植樹節",
"0315 消費者權益日",
"0401 愚人節",
"0501 勞動節",
"0504 青年節",
"0509 郝維節",
"0512 護士節",
"0601 兒童節",
"0701 建黨節 香港回歸紀念",
"0801 建軍節",
"0808 父親節",
"0816 燕銜泥節",
"0909 毛澤東逝世紀念",
"0910 教師節",
"0928 孔子誕辰",
"1001*國慶節",
"1006 老人節",
"1024 聯合國日",
"1112 孫中山誕辰紀念",
"1220 澳門回歸紀念",
"1225 聖誕節",
"1226 毛澤東誕辰紀念")

//農歷節日 *表示放假日
var lFtv = new Array(
"0101*春節、彌勒佛聖誕!",
"0106 定光佛聖誕",
"0115 元宵節",
"0208 釋迦牟尼佛出家",
"0215 釋迦牟尼佛涅盤",
"0209 海空上師生日!",
"0219 觀世音菩薩聖誕",
"0221 普賢菩薩聖誕",
"0316 准提菩薩聖誕",
"0404 文殊菩薩聖誕",
"0408 釋迦牟尼佛聖誕",
"0415 佛吉祥日——釋迦牟尼佛誕生、成道、涅盤三期同一慶(即南傳佛教國家的衛塞節)",
"0505 端午節",
"0513 伽藍菩薩聖誕",
"0603 護法韋馱尊天菩薩聖誕",
"0619 觀世音菩薩成道——此日放生、念佛,功德殊勝",
"0707 七夕情人節",
"0713 大勢至菩薩聖誕",
"0715 中元節",
"0724 龍樹菩薩聖誕",
"0730 地藏菩薩聖誕",
"0815 中秋節",
"0822 燃燈佛聖誕",
"0909 重陽節",
"0919 觀世音菩薩出家紀念日",
"0930 葯師琉璃光如來聖誕",
"1005 達摩祖師聖誕",
"1107 阿彌陀佛聖誕",
"1208 釋迦如來成道日,臘八節",
"1224 小年",
"1229 華嚴菩薩聖誕",
"0100*除夕")

//某月的第幾個星期幾
var wFtv = new Array(
"0520 母親節",
"0716 合作節",
"0730 被奴役國家周")

/*****************************************************************************
日期計算
*****************************************************************************/

//====================================== 傳回農歷 y年的總天數
function lYearDays(y) {
var i, sum = 348
for(i=0x8000; i>0x8; i>>=1) sum += (lunarInfo[y-1900] & i)? 1: 0
return(sum+leapDays(y))
}

//====================================== 傳回農歷 y年閏月的天數
function leapDays(y) {
if(leapMonth(y)) return((lunarInfo[y-1900] & 0x10000)? 30: 29)
else return(0)
}

//====================================== 傳回農歷 y年閏哪個月 1-12 , 沒閏傳回 0
function leapMonth(y) {
return(lunarInfo[y-1900] & 0xf)
}

//====================================== 傳回農歷 y年m月的總天數
function monthDays(y,m) {
return( (lunarInfo[y-1900] & (0x10000>>m))? 30: 29 )
}

//====================================== 算出農歷, 傳入日期物件, 傳回農歷日期物件
// 該物件屬性有 .year .month .day .isLeap .yearCyl .dayCyl .monCyl
function Lunar(objDate) {

var i, leap=0, temp=0
var baseDate = new Date(1900,0,31)
var offset = (objDate - baseDate)/86400000

this.dayCyl = offset + 40
this.monCyl = 14

for(i=1900; i<2050 && offset>0; i++) {
temp = lYearDays(i)
offset -= temp
this.monCyl += 12
}

if(offset<0) {
offset += temp;
i--;
this.monCyl -= 12
}

this.year = i
this.yearCyl = i-1864

leap = leapMonth(i) //閏哪個月
this.isLeap = false

for(i=1; i<13 && offset>0; i++) {
//閏月
if(leap>0 && i==(leap+1) && this.isLeap==false)
{ --i; this.isLeap = true; temp = leapDays(this.year); }
else
{ temp = monthDays(this.year, i); }

//解除閏月
if(this.isLeap==true && i==(leap+1)) this.isLeap = false

offset -= temp
if(this.isLeap == false) this.monCyl ++
}

if(offset==0 && leap>0 && i==leap+1)
if(this.isLeap)
{ this.isLeap = false; }
else
{ this.isLeap = true; --i; --this.monCyl;}

if(offset<0){ offset += temp; --i; --this.monCyl; }

this.month = i
this.day = offset + 1
}

//==============================傳回國歷 y年某m+1月的天數
function solarDays(y,m) {
if(m==1)
return(((y%4 == 0) && (y%100 != 0) || (y%400 == 0))? 29: 28)
else
return(solarMonth[m])
}
//============================== 傳入 offset 傳回干支, 0=甲子
function cyclical(num) {
return(Gan[num%10]+Zhi[num%12])
}

//============================== 月歷屬性
function calElement(sYear,sMonth,sDay,week,lYear,lMonth,lDay,isLeap,cYear,cMonth,cDay) {

this.isToday = false;
//國歷
this.sYear = sYear;
this.sMonth = sMonth;
this.sDay = sDay;
this.week = week;
//農歷
this.lYear = lYear;
this.lMonth = lMonth;
this.lDay = lDay;
this.isLeap = isLeap;
//干支
this.cYear = cYear;
this.cMonth = cMonth;
this.cDay = cDay;

this.color = '';

this.lunarFestival = ''; //農歷節日
this.solarFestival = ''; //國歷節日
this.solarTerms = ''; //節氣

}

//===== 某年的第n個節氣為幾日(從0小寒起算)
function sTerm(y,n) {
var offDate = new Date( ( 31556925974.7*(y-1900) + sTermInfo[n]*60000 ) + Date.UTC(1900,0,6,2,5) )
return(offDate.getUTCDate())
}

//============================== 傳回月歷物件 (y年,m+1月)
function calendar(y,m) {

var sDObj, lDObj, lY, lM, lD=1, lL, lX=0, tmp1, tmp2
var lDPOS = new Array(3)
var n = 0
var firstLM = 0

sDObj = new Date(y,m,1) //當月一日日期

this.length = solarDays(y,m) //國歷當月天數
this.firstWeek = sDObj.getDay() //國歷當月1日星期幾

for(var i=0;i<this.length;i++) {

if(lD>lX) {
sDObj = new Date(y,m,i+1) //當月一日日期
lDObj = new Lunar(sDObj) //農歷
lY = lDObj.year //農歷年
lM = lDObj.month //農歷月
lD = lDObj.day //農歷日
lL = lDObj.isLeap //農歷是否閏月
lX = lL? leapDays(lY): monthDays(lY,lM) //農歷當月最後一天

if(n==0) firstLM = lM
lDPOS[n++] = i-lD+1
}

//sYear,sMonth,sDay,week,
//lYear,lMonth,lDay,isLeap,
//cYear,cMonth,cDay
this[i] = new calElement(y, m+1, i+1, nStr1[(i+this.firstWeek)%7],
lY, lM, lD++, lL,
cyclical(lDObj.yearCyl) ,cyclical(lDObj.monCyl), cyclical(lDObj.dayCyl++) )

if((i+this.firstWeek)%7==0) this[i].color = 'red' //周日顏色
if((i+this.firstWeek)%14==13) this[i].color = 'red' //周休二日顏色
}

//節氣
tmp1=sTerm(y,m*2 )-1
tmp2=sTerm(y,m*2+1)-1
this[tmp1].solarTerms = solarTerm[m*2]
this[tmp2].solarTerms = solarTerm[m*2+1]
if(m==3) this[tmp1].color = 'red' //清明顏色

//國歷節日
for(i in sFtv)
if(sFtv[i].match(/^(\d{2})(\d{2})([\s\*])(.+)$/))
if(Number(RegExp.$1)==(m+1)) {
this[Number(RegExp.$2)-1].solarFestival += RegExp.$4 + ' '
if(RegExp.$3=='*') this[Number(RegExp.$2)-1].color = 'red'
}

//月周節日
for(i in wFtv)
if(wFtv[i].match(/^(\d{2})(\d)(\d)([\s\*])(.+)$/))
if(Number(RegExp.$1)==(m+1)) {
tmp1=Number(RegExp.$2)
tmp2=Number(RegExp.$3)
this[((this.firstWeek>tmp2)?7:0) + 7*(tmp1-1) + tmp2 - this.firstWeek].solarFestival += RegExp.$5 + ' '
}

//農歷節日
for(i in lFtv)
if(lFtv[i].match(/^(\d{2})(.{2})([\s\*])(.+)$/)) {
tmp1=Number(RegExp.$1)-firstLM
if(tmp1==-11) tmp1=1
if(tmp1 >=0 && tmp1<n) {
tmp2 = lDPOS[tmp1] + Number(RegExp.$2) -1
if( tmp2 >= 0 && tmp2<this.length) {
this[tmp2].lunarFestival += RegExp.$4 + ' '
if(RegExp.$3=='*') this[tmp2].color = 'red'
}
}
}

//黑色星期五
if((this.firstWeek+12)%7==5)
this[12].solarFestival += '黑色星期五 '

//今日
if(y==tY && m==tM) this[tD-1].isToday = true;

}

//====================== 中文日期
function cDay(d){
var s;

switch (d) {
case 10:
s = '初十'; break;
case 20:
s = '二十'; break;
break;
case 30:
s = '三十'; break;
break;
default :
s = nStr2[Math.floor(d/10)];
s += nStr1[d%10];
}
return(s);
}
<!-- 此特效使用《網頁特效精靈》編輯製作-->
<!-- 奧天軟體:http://www.aosky.net-->
///////////////////////////////////////////////////////////////////////////////

var cld;

function drawCld(SY,SM) {
var i,sD,s,size;
cld = new calendar(SY,SM);

if(SY>1874 && SY<1909) yDisplay = '光緒' + (((SY-1874)==1)?'元':SY-1874)
if(SY>1908 && SY<1912) yDisplay = '宣統' + (((SY-1908)==1)?'元':SY-1908)
if(SY>1911 && SY<1950) yDisplay = '民國' + (((SY-1911)==1)?'元':SY-1911)
if(SY>1949) yDisplay = '共和國' + (((SY-1949)==1)?'元':SY-1949)

GZ.innerHTML = yDisplay +'年 農歷' + cyclical(SY-1900+36) + '年 【'+Animals[(SY-4)%12]+'】';

YMBG.innerHTML = "" + SY + "<BR>" + monthName[SM];

for(i=0;i<42;i++) {

sObj=eval('SD'+ i);
lObj=eval('LD'+ i);

sObj.className = '';

sD = i - cld.firstWeek;

if(sD>-1 && sD<cld.length) { //日期內
sObj.innerHTML = sD+1;

if(cld[sD].isToday) sObj.className = 'todyaColor'; //今日顏色

sObj.style.color = cld[sD].color; //國定假日顏色

if(cld[sD].lDay==1) //顯示農歷月
lObj.innerHTML = '<b>'+(cld[sD].isLeap?'閏':'') + cld[sD].lMonth + '月' + (monthDays(cld[sD].lYear,cld[sD].lMonth)==29?'小':'大')+'</b>';
else //顯示農歷日
lObj.innerHTML = cDay(cld[sD].lDay);

s=cld[sD].lunarFestival;
if(s.length>0) { //農歷節日
if(s.length>6) s = s.substr(0, 4)+'…';
s = s.fontcolor('red');
}
else { //國歷節日
s=cld[sD].solarFestival;
if(s.length>0) {
size = (s.charCodeAt(0)>0 && s.charCodeAt(0)<128)?8:4;
if(s.length>size+2) s = s.substr(0, size)+'…';
s = s.fontcolor('blue');
}
else { //廿四節氣
s=cld[sD].solarTerms;
if(s.length>0) s = s.fontcolor('limegreen');
}
}
if(s.length>0) lObj.innerHTML = s;

}
else { //非日期
sObj.innerHTML = '';
lObj.innerHTML = '';
}
}
}

function changeCld() {
var y,m;
y=CLD.SY.selectedIndex+1900;
m=CLD.SM.selectedIndex;
drawCld(y,m);
}

function pushBtm(K) {
switch (K){
case 'YU' :
if(CLD.SY.selectedIndex>0) CLD.SY.selectedIndex--;
break;
case 'YD' :
if(CLD.SY.selectedIndex<149) CLD.SY.selectedIndex++;
break;
case 'MU' :
if(CLD.SM.selectedIndex>0) {
CLD.SM.selectedIndex--;
}
else {
CLD.SM.selectedIndex=11;
if(CLD.SY.selectedIndex>0) CLD.SY.selectedIndex--;
}
break;
case 'MD' :
if(CLD.SM.selectedIndex<11) {
CLD.SM.selectedIndex++;
}
else {
CLD.SM.selectedIndex=0;
if(CLD.SY.selectedIndex<149) CLD.SY.selectedIndex++;
}
break;
default :
CLD.SY.selectedIndex=tY-1900;
CLD.SM.selectedIndex=tM;
}
changeCld();
}

var Today = new Date();
var tY = Today.getFullYear();
var tM = Today.getMonth();
var tD = Today.getDate();
//////////////////////////////////////////////////////////////////////////////

var width = "130";
var offsetx = 2;
var offsety = 16;

var x = 0;
var y = 0;
var snow = 0;
var sw = 0;
var cnt = 0;

var dStyle;
document.onmousemove = mEvn;

//顯示詳細日期資料
function mOvr(v) {
var s,festival;
var sObj=eval('SD'+ v);
var d=sObj.innerHTML-1;

//sYear,sMonth,sDay,week,
//lYear,lMonth,lDay,isLeap,
//cYear,cMonth,cDay

if(sObj.innerHTML!='') {

sObj.style.cursor = 's-resize';

if(cld[d].solarTerms == '' && cld[d].solarFestival == '' && cld[d].lunarFestival == '')
festival = '';
else
festival = '<TABLE WIDTH=100% BORDER=0 CELLPADDING=2 CELLSPACING=0 BGCOLOR="#CCFFCC"><TR><TD>'+
'<FONT COLOR="#000000" STYLE="font-size:9pt;">'+cld[d].solarTerms + ' ' + cld[d].solarFestival + ' ' + cld[d].lunarFestival+'</FONT></TD>'+'</TR></TABLE>';

s= '<TABLE WIDTH="130" BORDER=0 CELLPADDING="2" CELLSPACING=0 BGCOLOR="#000066"><TR><TD>' +
'<TABLE WIDTH=100% BORDER=0 CELLPADDING=0 CELLSPACING=0><TR><TD ALIGN="right"><FONT COLOR="#ffffff" STYLE="font-size:9pt;">'+
cld[d].sYear+' 年 '+cld[d].sMonth+' 月 '+cld[d].sDay+' 日<br>星期'+cld[d].week+'<br>'+
'<font color="violet">農歷'+(cld[d].isLeap?'閏 ':' ')+cld[d].lMonth+' 月 '+cld[d].lDay+' 日</font><br>'+
'<font color="yellow">'+cld[d].cYear+'年 '+cld[d].cMonth+'月 '+cld[d].cDay + '日</font>'+
'</FONT></TD></TR></TABLE>'+ festival +'</TD></TR></TABLE>';

document.all["detail"].innerHTML = s;

if (snow == 0) {
dStyle.left = x+offsetx-(width/2);
dStyle.top = y+offsety;
dStyle.visibility = "visible";
snow = 1;
}
}
}

//清除詳細日期資料
function mOut() {
if ( cnt >= 1 ) { sw = 0 }
if ( sw == 0 ) { snow = 0; dStyle.visibility = "hidden";}
else cnt++;
}

//取得位置
function mEvn() {
x=event.x;
y=event.y;
if (document.body.scrollLeft)
{x=event.x+document.body.scrollLeft; y=event.y+document.body.scrollTop;}
if (snow){
dStyle.left = x+offsetx-(width/2)
dStyle.top = y+offsety
}
}

///////////////////////////////////////////////////////////////////////////

function changeTZ() {
CITY.innerHTML = CLD.TZ.value.substr(6)
setCookie("TZ",CLD.TZ.selectedIndex)
}

function tick() {
var today
today = new Date()
Clock.innerHTML = today.toLocaleString().replace(/(年|月)/g, "/").replace(/日/, "");
Clock.innerHTML = TimeAdd(today.toGMTString(), CLD.TZ.value)
window.setTimeout("tick()", 1000);
}

function setCookie(name, value) {
var today = new Date()
var expires = new Date()
expires.setTime(today.getTime() + 1000*60*60*24*365)
document.cookie = name + "=" + escape(value) + "; expires=" + expires.toGMTString()
}

function getCookie(Name) {
var search = Name + "="
if(document.cookie.length > 0) {
offset = document.cookie.indexOf(search)
if(offset != -1) {
offset += search.length
end = document.cookie.indexOf(";", offset)
if(end == -1) end = document.cookie.length
return unescape(document.cookie.substring(offset, end))
}
else return ""
}
}

/////////////////////////////////////////////////////////

function initial() {
dStyle = detail.style;
CLD.SY.selectedIndex=tY-1900;
CLD.SM.selectedIndex=tM;
drawCld(tY,tM);

CLD.TZ.selectedIndex=getCookie("TZ");
changeTZ();
tick();
}

//-->
</SCRIPT>

<SCRIPT language=VBScript>
<!--
'===== 算世界時間
Function TimeAdd(UTC,T)
Dim PlusMinus, DST, y
If Left(T,1)="-" Then PlusMinus = -1 Else PlusMinus = 1
UTC=Right(UTC,Len(UTC)-5)
UTC=Left(UTC,Len(UTC)-4)
y = Year(UTC)
TimeAdd=DateAdd("n", (Cint(Mid(T,2,2))*60 + Cint(Mid(T,4,2))) * PlusMinus, UTC)
'美國日光節約期間: 4月第一個星日00:00 至 10月最後一個星期日00:00
If Mid(T,6,1)="*" And DateSerial(y,4,(9 - Weekday(DateSerial(y,4,1)) mod 7) ) <= TimeAdd And DateSerial(y,10,31 - Weekday(DateSerial(y,10,31))) >= TimeAdd Then
TimeAdd=CStr(DateAdd("h", 1, TimeAdd))
tSave.innerHTML = "R"
Else
tSave.innerHTML = ""
End If
TimeAdd = CStr(TimeAdd)
End Function
'-->
</SCRIPT>

<STYLE>.todyaColor {
BACKGROUND-COLOR: aqua
}
</STYLE>

<SCRIPT language=JavaScript><!--
if(navigator.appName == "Netscape" || parseInt(navigator.appVersion) < 4)
document.write("<h1>你的瀏覽器無法執行此程序。</h1>此程序在 IE4 以後的版本才能執行!!")
//--></SCRIPT>

<DIV id=detail style="POSITION: absolute"></DIV>
<CENTER>
<FORM name=CLD>
<TABLE>
<TBODY>
<TR>
<TD align=middle vAlign=top><FONT color=#ff6633 size=3>
<SCRIPT language=JavaScript>
var enabled = 0; today = new Date();
var day; var date;
if(today.getDay()==0) day = "星期日"
if(today.getDay()==1) day = "星期一"
if(today.getDay()==2) day = "星期二"
if(today.getDay()==3) day = "星期三"
if(today.getDay()==4) day = "星期四"
if(today.getDay()==5) day = "星期五"
if(today.getDay()==6) day = "星期六"
document.fgColor = "000000";
date = " 佛歷 " + (today.getYear()+544) + " 年 " +
(today.getMonth() + 1 ) + "月 " + today.getDate() + "日 " +
day +"";
document.write(date)
</SCRIPT>
</FONT><BR><FONT size=2 style="FONT-SIZE: 9pt">本地時間:</FONT><BR><FONT
color=#000080 face=Arial id=Clock size=4 align="center"></FONT>
<P><!--時區 *表示自動調整為日光節約時間--><FONT size=2 style="FONT-SIZE: 9pt"><SELECT
name=TZ onchange=changeTZ() style="FONT-SIZE: 9pt"> <OPTION selected
value="-1200 安尼威土克、瓜甲蘭">國際換日線<OPTION value="-1100 中途島、薩摩亞群島">薩摩亞<OPTION
value="-1000 夏威夷">夏威夷<OPTION value=-0900*阿拉斯加>阿拉斯加<OPTION
value=-0800*太平洋時間(美加)、提亞納>太平洋<OPTION value="-0700 亞歷桑那">美國山區<OPTION
value=-0700*山區時間(美加)>美加山區<OPTION value=-0600*薩克其萬(加拿大)>加拿大中部<OPTION
value=-0600*墨西哥市、塔克西卡帕>墨西哥<OPTION value=-0600*中部時間(美加)>美加中部<OPTION
value=-0500*波哥大、里瑪>南美洲太平洋<OPTION value=-0500*東部時間(美加)>美加東部<OPTION
value=-0500*印第安納(東部)>美東<OPTION value=-0400*加拉卡斯、拉帕茲>南美洲西部<OPTION
value="-0400*大西洋時間 加拿大)">大西洋<OPTION value="-0330 新島(加拿大東岸)">紐芬蘭<OPTION
value="-0300 波西尼亞">東南美洲<OPTION value="-0300 布魯諾斯愛麗斯、喬治城">南美洲東部<OPTION
value=-0200*大西洋中部>大西洋中部<OPTION value=-0100*亞速爾群島、維德角群島>亞速爾<OPTION
value="+0000 格林威治時間、都柏林、愛丁堡、倫敦">英國夏令<OPTION
value="+0000 莫洛維亞(賴比瑞亞)、卡薩布蘭卡">格林威治標准<OPTION
value="+0100 巴黎、馬德里">羅馬<OPTION value="+0100 布拉格, 華沙, 布達佩斯">中歐<OPTION
value="+0100 柏林、斯德哥爾摩、羅馬、伯恩、布魯賽爾、維也納">西歐<OPTION
value="+0200 以色列">以色列<OPTION value=+0200*東歐>東歐<OPTION
value=+0200*開羅>埃及<OPTION value=+0200*雅典、赫爾辛基、伊斯坦堡>GFT<OPTION
value=+0200*赫拉雷、皮托里>南非<OPTION
value=+0300*巴格達、科威特、奈洛比(肯亞)、里雅德(沙烏地)>沙烏地阿拉伯<OPTION
value=+0300*莫斯科、聖彼得堡、賀占、窩瓦格瑞德>俄羅斯<OPTION value=+0330*德黑蘭>伊朗<OPTION
value=+0400*阿布達比(東阿拉伯)、莫斯凱、塔布理斯(喬治亞共和)>阿拉伯<OPTION
value=+0430*喀布爾>阿富汗<OPTION value="+0500 伊斯蘭馬巴德、克洛奇、伊卡特林堡、塔須肯">西亞<OPTION
value="+0530 孟買、加爾各答、馬垂斯、新德里、可倫坡">印度<OPTION
value="+0600 阿馬提、達卡">中亞<OPTION value="+0700 曼谷、亞加達、胡志明市">曼谷<OPTION
value="+0800 北京、重慶、黑龍江">中國<OPTION value="+0800 台灣、香港、新加

『柒』 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里的Calendar類編寫萬年歷

/*
題目:輸出任意年份任意月份的日歷表(公元後)
思路:
1.已知1年1月1日是星期日,1%7=1對應的是星期日,2%7=2對應的是星期一,以此類推;
2.計算當年以前所有天數+當年當月1號之前所有天數;
a.年份分平年閏年,平年365天,閏年366天;
b.閏年的判斷方法year%400==0||(year%100!=0&&year%4==0)若為真,則為閏年否則為平年;
c.定義平年/閏年數組,包含各月天數;
d.遍歷數組求和,計算當年當月前總天數;
e.當年以前所有天數+當年當月前總天數+1即為1年1月1日到當年當月1日的總天數;
3.總天數對7取模,根據結果判斷當月1號是星期幾,輸出空白區域;
4.輸出當月日歷表,逢星期六換行
*/
importjava.util.Scanner;
classFindMonthList{
publicstaticvoidmain(String[]args){
Scannersc=newScanner(System.in);
System.out.println("請輸入年份:");
intyear=sc.nextInt();//年份
if(year<1){//判斷非法輸入年份
System.out.println("輸入錯誤!");
return;
}
System.out.println("請輸入月份:");
intmonth=sc.nextInt();//月份
if(month<1||month>12){//判斷非法輸入月份
System.out.println("輸入錯誤!");
return;
}
//輸出表頭
System.out.println("-------"+year+"年"+month+"月"+"-------");
System.out.println();
System.out.println("日一二三四五六");

//計算當前年份以前所有天數beforeYearTotalDay;每4年一個閏年,閏年366天,平年365天
intbeforeYearTotalDay=((year-1)/4*366)+(year-1-((year-1)/4))*365;
int[]arrLeapYear={0,31,29,31,30,31,30,31,31,30,31,30,31};//閏年各月天數int數組
int[]arrNormalYear={0,31,28,31,30,31,30,31,31,30,31,30,31};//平年各月天數int數組
intbeforeMonthTotalDay=0;//定義本年當月之前月份的總天數
if(year%400==0||(year%100!=0&&year%4==0)){//判斷當前年份是否是閏年
for(inti=0;i<month;i++){//for循環計算當月之前總天數
//計算當前月份之前的所有天數
beforeMonthTotalDay=beforeMonthTotalDay+arrLeapYear[i];
}
//判斷當月1日是星期幾
inttotalDay=beforeYearTotalDay+beforeMonthTotalDay+1;
intweek=totalDay%7;//已知1年1月1日是星期日,即模7得1對應的是星期日
for(inti=0;i<(week-1+7)%7;i++){//如果寫成i<(week-1)會出現i<-1的情況
System.out.print("");//輸出開頭空白
}
for(inti=1;i<=arrLeapYear[month];i++){//for循環輸出各月天數
System.out.print(i+"");
if(i<10){//小於10的數補一個空格,以便列印整齊
System.out.print("");
}
if(i%7==((7-(week-1))%7)||i==arrLeapYear[month]){//每逢星期六/尾數換行
System.out.println();
}
}

}else{//不是閏年就是平年
for(inti=0;i<month;i++){//for循環計算出當月之前月份總天數
beforeMonthTotalDay=beforeMonthTotalDay+arrNormalYear[i];
}
//判斷當月1日是星期幾
inttotalDay=beforeYearTotalDay+beforeMonthTotalDay+1;
intweek=totalDay%7;//已知1年1月1日是星期日,即模7得1對應的是星期日
for(inti=0;i<(week-1+7)%7;i++){//如果寫成i<(week-1)會出現i<-1的情況
System.out.print("");//輸出開頭空白
}
for(inti=1;i<=arrNormalYear[month];i++){//for循環輸出各月天數
System.out.print(i+"");
if(i<10){//小於10的數補一個空格,以便列印整齊
System.out.print("");
}
if(i%7==((7-(week-1))%7)||i==arrNormalYear[month]){//每逢星期六/尾數換行
System.out.println();
}
}
}
}
}

閱讀全文

與java做日歷相關的資料

熱點內容
android天氣apijson 瀏覽:982
為什麼創建id會出現伺服器錯誤 瀏覽:835
代碼中有不必編譯的單詞嗎 瀏覽:563
鉤子與資料庫編程 瀏覽:563
安卓光遇錄歌怎麼設置 瀏覽:485
虛擬機怎麼和雲伺服器搭建集群 瀏覽:896
python倒計時代碼turtle 瀏覽:491
cad命令mv 瀏覽:928
nexus7一代androidl 瀏覽:306
linux使用靜態庫編譯過程 瀏覽:103
android平滑滾動效果 瀏覽:841
什麼是編譯器指令 瀏覽:219
微控制器邏輯命令使用什麼匯流排 瀏覽:887
程序員在學校里是學什麼的 瀏覽:604
oraclejava數據類型 瀏覽:890
程序員考注冊會計師 瀏覽:957
怎麼使用access的命令按鈕 瀏覽:899
有點錢app在哪裡下載 瀏覽:832
博途v15解壓後無法安裝 瀏覽:205
什麼是根伺服器主機 瀏覽:438