十年網(wǎng)站開(kāi)發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營(yíng)維護(hù)+專業(yè)推廣+無(wú)憂售后,網(wǎng)站問(wèn)題一站解決
我給你貼上我在java核心技術(shù)中看到的代碼吧,當(dāng)然沒(méi)有輸入年份和月份,是按照當(dāng)前時(shí)間創(chuàng)建的,寫有我寫的注釋,應(yīng)該能看的懂
創(chuàng)新互聯(lián)建站成都企業(yè)網(wǎng)站建設(shè)服務(wù),提供成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作網(wǎng)站開(kāi)發(fā),網(wǎng)站定制,建網(wǎng)站,網(wǎng)站搭建,網(wǎng)站設(shè)計(jì),響應(yīng)式網(wǎng)站設(shè)計(jì),網(wǎng)頁(yè)設(shè)計(jì)師打造企業(yè)風(fēng)格網(wǎng)站,提供周到的售前咨詢和貼心的售后服務(wù)。歡迎咨詢做網(wǎng)站需要多少錢:18980820575
/*
* 2012年5月13日10:37:58
* 日歷程序
* Function:
* 顯示當(dāng)前月份的日歷
* 總結(jié)
* 1. 0-11分別代表1-12月
* 1-7分別代表周日-周六
* 2. 使用GregorianCalendar對(duì)象的get方法(參數(shù))獲取月,日,年等信息
* 3.
*/
import java.text.DateFormatSymbols;
import java.util.*;
public class CalendarTest {
public static void main(String[] args) {
//construct d as current date構(gòu)造一個(gè)日期
GregorianCalendar d = new GregorianCalendar();
//獲取今天是這個(gè)月的第幾天
int today = d.get(Calendar.DAY_OF_MONTH); //Calendar.DAY_OF_MONTH作為參數(shù)調(diào)用,得到今天是這個(gè)月的第幾天
int month = d.get(Calendar.MONTH); //月份
d.set(Calendar.DAY_OF_MONTH, 1); //設(shè)置d的日期是本月的1號(hào)
int weekDay = d.get(Calendar.DAY_OF_WEEK); //獲取當(dāng)天位于本星期的第幾天,也就確定了星期幾,值的范圍是1-7
int firstDayOfWeek = d.getFirstDayOfWeek(); //獲取一星期的第一天,我們得到的是Calendar.SUNDAY,因?yàn)槲覀円恍瞧诘牡谝惶焓侵苋?/p>
int indent = 0; //為了定位本月第一天,定義索引
while (weekDay != firstDayOfWeek) {
//注意,月份用0-11代表1-12月,為了清晰起見(jiàn),使用常量代替,下面獲取月份得到的實(shí)際是當(dāng)前月-1的值,所以我們要加1
//System.out.printf("當(dāng)前星期的第%d天,位于當(dāng)月的第%d天, 現(xiàn)在是%d月\n",
// weekDay, d.get(Calendar.DAY_OF_MONTH), d.get(Calendar.MONTH)+1); //Test Code
indent++;//縮進(jìn)個(gè)數(shù)+1
d.add(Calendar.DAY_OF_MONTH, -1);//當(dāng)前天數(shù)-1,如果現(xiàn)在是1號(hào),則執(zhí)行本條代碼后,時(shí)間變?yōu)樯弦粋€(gè)月最后一天
weekDay = d.get(Calendar.DAY_OF_WEEK); //重新獲取當(dāng)天位于本星期的第幾天
}
String[] weekDayNames = new DateFormatSymbols().getShortWeekdays();//獲取簡(jiǎn)短形式的星期字符串?dāng)?shù)組
//System.out.println(weekDayNames.length);getShortWeekdays()得到的數(shù)組的長(zhǎng)度是8,下標(biāo)為0的是沒(méi)有值1為星期日...7為星期六
//注釋代碼1
//Java核心技術(shù)的代碼
/*
do {
//System.out.printf("%4s", weekDayNames[weekDay]); //經(jīng)過(guò)上面定義索引,weekDay代表的是本星期日
d.add(Calendar.DAY_OF_MONTH, 1); //天數(shù)加1
weekDay = d.get(Calendar.DAY_OF_WEEK); //重新獲得weekDay的值
} while (weekDay != firstDayOfWeek); //當(dāng)循環(huán)完一個(gè)星期后,這里判斷不成立,退出循環(huán)
*/
//我寫的代碼,替換上面注釋代碼1
for (int i=1; iweekDayNames.length; i++)//打印星期標(biāo)題
System.out.printf("%3s\t", weekDayNames[i]);//引號(hào)內(nèi)是一個(gè)全角的空格,因?yàn)槭侵形陌?,不是書上英文環(huán)境,中文和空格對(duì)于不上,這里我們用\t解決
//System.out.printf("%3s ", weekDayNames[i]); //方式2
System.out.println();//換行
for (int i=1; i=indent; i++)//確定一星期的一天位置,利用上面indent
System.out.printf("\t");//如用方式2,則這里內(nèi)容是四個(gè)全角空格
//實(shí)現(xiàn)輸出日期
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);//天數(shù)加1
weekDay = d.get(Calendar.DAY_OF_WEEK);//刷新weekDay
if (weekDay == firstDayOfWeek) //如果這天等于星期天則換行
System.out.println();
} while (d.get(Calendar.MONTH) == month);
}
}
先上張效果圖:以下是實(shí)現(xiàn)代碼:/*日歷*/
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" }; // 存放月份的字符數(shù)組
String[] columnNames = { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" }; // 存放星期的字符數(shù)組
Calendar ca = Calendar.getInstance();
Container contentPane = getContentPane();
VectorString vector = new VectorString();
String[][] date = new String[6][7]; // 表格的顯示數(shù)據(jù)的格式
TextField tf; // 文本框的值代表的是年份
JComboBox jb;
JTable table; // 把日期用table的方式顯示出來(lái)
public void getDate(String year, String month, String week, int Max_Day) {
int n = 0, b = 0;
// 動(dòng)態(tài)把傳進(jìn)來(lái)月份的天數(shù)存放到容器里
for (int j = 1; j = Max_Day; j++) {
vector.add(String.valueOf(j));
}
//每次往table里添加數(shù)據(jù)的時(shí)候,都預(yù)先把原table里 的 數(shù)據(jù)清空
for(int x = 0;xdate.length;x++){
for(int y = 0;ydate[x].length;y++){
date[x][y] = null;
}
}
// 根據(jù)傳進(jìn)來(lái)月份的第一天是星期幾,來(lái)構(gòu)建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;
}
}
// 把容器里的數(shù)據(jù)全部清除,以備下次再存放新的數(shù)據(jù)
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)); // 得到當(dāng)前的系統(tǒng)時(shí)間的年份,并把這個(gè)數(shù)值存放到y(tǒng)ear這個(gè)變量里
String month = String.valueOf(ca.get(Calendar.MONTH) + 1); // 得到當(dāng)前的系統(tǒng)時(shí)間的月份,并把這個(gè)數(shù)值存放到month這個(gè)變量里
String day = String.valueOf(ca.get(Calendar.DATE)); // 得到當(dāng)前的系統(tǒng)時(shí)間的日期,并把這個(gè)數(shù)值存放到day這個(gè)變量里
ca.set(Calendar.DATE, 1); // 把Calendar 對(duì)象的DATA設(shè)置為1
String week = String.valueOf(ca.get(Calendar.DAY_OF_WEEK)); // 根據(jù)設(shè)置的Calendar對(duì)象,計(jì)算出這個(gè)月第一天是星期幾
int Max_Day = ca.getActualMaximum(Calendar.DATE); // 得到當(dāng)前系統(tǒng)時(shí)間月份有多少天
getDate(year, month, week, Max_Day);
// 從月份數(shù)組里取出與當(dāng)前系統(tǒng)時(shí)間一樣的月份值
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.setPreferredScrollableViewportSize(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(); // 調(diào)用內(nèi)部類PaintThread,根據(jù)里面的設(shè)置來(lái)重畫
}
public static void main(String[] args) {
Demo28 d28 = new Demo28();
d28.paint();
}
// 鼠標(biāo)單擊左邊按鈕觸發(fā)的事件
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 對(duì)象的YEAR設(shè)置為用戶設(shè)置的年份
String new_month = (String) jb.getSelectedItem(); // 得到月份值
ca.set(Calendar.MONTH, Integer.parseInt(new_month) - 1); // 把Calendar對(duì)象的MONTH設(shè)置為用戶設(shè)置的月份
ca.set(Calendar.DATE, 1); // 把Calendar 對(duì)象的DATA設(shè)置為1
String new_week = String.valueOf(ca.get(Calendar.DAY_OF_WEEK)); // 根據(jù)設(shè)置的Calendar對(duì)象,計(jì)算出這個(gè)月第一天是星期幾
int Max_Day = ca.getActualMaximum(Calendar.DATE); // 根據(jù)設(shè)置后的Calendar對(duì)象計(jì)算這個(gè)月份有多少天
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對(duì)象的YEAR設(shè)置為用戶設(shè)置的年份
String new_month = (String) jb.getSelectedItem(); // 得到月份值
ca.set(Calendar.MONTH, Integer.parseInt(new_month) - 1); // 把Calendar對(duì)象的MONTH設(shè)置為用戶設(shè)置的月份
ca.set(Calendar.DATE, 1); // 把Calendar 對(duì)象的DATA設(shè)置為1
String new_week = String.valueOf(ca
.get(Calendar.DAY_OF_WEEK)); // 根據(jù)設(shè)置的Calendar對(duì)象,計(jì)算出這個(gè)月第一天是星期幾
int Max_Day = ca.getActualMaximum(Calendar.DATE); // 根據(jù)設(shè)置后的Calendar對(duì)象計(jì)算這個(gè)月份有多少天
getDate(new_year, new_month, new_week, Max_Day);
}
} catch (NumberFormatException excption) {
System.out.println("你輸入的年份不正確!");
}
}
}
// 鼠標(biāo)單擊右邊按鈕觸發(fā)的事件
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 對(duì)象的YEAR設(shè)置為用戶設(shè)置的年份
String new_month = (String) jb.getSelectedItem(); // 得到月份值
ca.set(Calendar.MONTH, Integer.parseInt(new_month) - 1); // 把Calendar對(duì)象的MONTH設(shè)置為用戶設(shè)置的月份
ca.set(Calendar.DATE, 1); // 把Calendar 對(duì)象的DATA設(shè)置為1
String new_week = String.valueOf(ca.get(Calendar.DAY_OF_WEEK)); // 根據(jù)設(shè)置的Calendar對(duì)象,計(jì)算出這個(gè)月第一天是星期幾
int Max_Day = ca.getActualMaximum(Calendar.DATE); // 根據(jù)設(shè)置后的Calendar對(duì)象計(jì)算這個(gè)月份有多少天
getDate(new_year, new_month, new_week, Max_Day);
}
}
// 鼠標(biāo)單擊選擇框觸發(fā)的事件
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(); // 得到用戶設(shè)置的月份
ca.set(Calendar.MONTH, Integer.parseInt(new_month) - 1); // 把Calendar對(duì)象的月份值設(shè)置為用戶定義的月份
ca.set(Calendar.DATE, 1); // 把Calendar 對(duì)象的DATA設(shè)置為1
String new_week = String.valueOf(ca.get(Calendar.DAY_OF_WEEK)); // 根據(jù)設(shè)置的Calendar對(duì)象,計(jì)算出這個(gè)月第一天是星期幾
int Max_Day = ca.getActualMaximum(Calendar.DATE); // 根據(jù)設(shè)置后的Calendar對(duì)象計(jì)算這個(gè)月份有多少天
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();
}
}
}
}
}
import java.util.Scanner; public class Wan{ public static void main(String[] args){ Scanner name = new Scanner(System.in); System.out.print("請(qǐng)輸入要查詢的年份:"); int year = name.nextInt(); System.out.print("請(qǐng)輸入該年的月份"); int month = name.nextInt(); } //累加 該年至輸入的月份 天數(shù) //比如 輸入2009年的 3月分 // 那就累加 2009年的1月至 3月1號(hào)的總天數(shù) public void sumDay(int year,int month){ int day = 0; int sumDay = 0; for(int i = 1;i=month;i++){ switch(i){ case 1: case 3: case 5: case 7: case 8: case 10: case 12: day = 31; break; case 2: if(year % 4 == 0 || year % 400 == 0 year %100!=0){ day = 29; }else{ day = 28; } break; default: day = 30; } //最后一個(gè)月份不要累加 因?yàn)槲覀冎皇且愕皆撛碌囊惶?hào)就可以了 if(i month){ sumDay += day; } } //累加 2000年到該年的一月一號(hào)天數(shù) for(int i = 2000;iyear;i++){ if( i % 4 == 0 || i %400== 0 i % 100 != 0){ sumDay += 366; }else{ sumDay += 365; } } //求該月一號(hào)為星期幾 int week = sumDay % 7 +1; if(week == 7){ week = 0; } } public void fomatDate(int week,int day){ int g = 0; for(int i = 0;iweek;i++){ System.out.print("\t"); } for(int i = 1;i=day;i++){ System.out.print(i+"\t"); g = week + i; if(g % 7 == 0){ System.out.println(); } } } } 給點(diǎn)分哈 寫得好累
public?class?MyCalendar?{
public?static?void?main(String?args[])?{
Scanner?sc?=?new?Scanner(System.in);
Calendar?c?=?Calendar.getInstance();
System.out.println("請(qǐng)輸入數(shù)字年:(比如?2014)");
int?year?=?sc.nextInt();
sc.close();
//??????int?year?=?2014;
c.set(Calendar.YEAR,year);
for?(int?i?=?0;?i??12;?i++)?{
c.set(Calendar.MONTH,i);??//
c.set(Calendar.DATE,1);??//設(shè)置成1月
printMonth(c);
}?
}
public?static?void?printMonth(Calendar?c){
c.set(Calendar.DAY_OF_MONTH,1);???//設(shè)置成一日
System.out.printf("\n\n=========??%s??月??=========\n",c.get(Calendar.MONTH)+1);
String[]?weeks?=?{?"日",?"一"?,??"二",??"三",??"四",??"五",??"六"?};
for?(int?i?=?0;?i??weeks.length;?i++)?{
System.out.printf("%s"?+?(i?!=?6??"\t":"\n"),weeks[i]);
}
int?offday?=?c.get(Calendar.DAY_OF_WEEK)?-?1;
for(int?i?=?0;?i??offday;?i++){
System.out.printf("\t");
}
int?month?=?c.get(Calendar.MONTH);
while(c.get(Calendar.MONTH)?==?month?){
System.out.printf("%d"?+?(?(c.get(Calendar.DAY_OF_WEEK))?!=?7???"\t":"\n")?,c.get(Calendar.DAY_OF_MONTH));
c.add(Calendar.DAY_OF_MONTH,?1);
}
}
}