這是我幾年前寫的
創新互聯建站專注為客戶提供全方位的互聯網綜合服務,包含不限于成都網站制作、成都網站建設、平桂網絡推廣、微信小程序開發、平桂網絡營銷、平桂企業策劃、平桂品牌公關、搜索引擎seo、人物專訪、企業宣傳片、企業代運營等,從售前售中售后,我們都將竭誠為您服務,您的肯定,是我們最大的嘉獎;創新互聯建站為所有大學生創業者提供平桂建站搭建服務,24小時服務熱線:13518219792,官方網址:vcdvsql.cn
import?java.util.ArrayList;
import?java.util.Calendar;
import?java.util.List;
public?class?$?{
private?static?int[]?DAYS?=?{?31,?28,?31,?30,?31,?30,?31,?31,?30,?31,?30,?31?};
public?static?void?main(String[]?args)?{
long?l1?=?System.currentTimeMillis();
List?data?=?rili(2015,?1,?2015,?12);
long?l2?=?System.currentTimeMillis();
for?(int?i?=?0;?i??data.size();?i++)?{
System.out.println(data.get(i));
}
System.out.println((l2?-?l1)?+?"MS");
}
private?static?List?rili(int?startYear,?int?startMonth,?int?endYear,?int?endMonth)?{
if?(startYear??endYear?||?(startYear?==?endYear??startMonth??endMonth))?{
return?null;
}
List?data?=?new?ArrayList();
for?(int?ii?=?startYear;?ii?=?endYear;?ii++)?{
int?startM?=?startMonth?-?1;
int?endM?=?endMonth?-?1;
if?(startYear??endYear)?{
if?(ii?==?endYear)?{
endM?=?11;
}?else?{
startM?=?0;
}
}
for?(int?i?=?startM;?i?=?endM;?i++)?{
data.add("-----------------------"?+?ii?+?"年"?+?(i?+?1)?+?"月-----------------------");
data.add("日\t一\t二\t三\t四\t五\t六");
int?day?=?days(ii,?i);
StringBuffer?buf?=?new?StringBuffer();
int?idx?=?1;
while?(idx?=?day)?{
int?len?=?0;
if?(idx?==?1)?{
Calendar?c?=?Calendar.getInstance();
c.set(ii,?i,?idx);
int?xingqi?=?c.get(Calendar.DAY_OF_WEEK);
len?=?getLen(xingqi);
buf.append(addBlank(len));
}
buf.append(idx++);
for?(int?k?=?len?+?1;?k??7;?k++)?{
if?(idx??day)?{
break;
}
buf.append("\t"?+?(idx++));
}
buf.append("\n");
}
data.add(buf);
}
}
return?data;
}
private?static?StringBuffer?addBlank(int?len)?{
StringBuffer?buf?=?new?StringBuffer();
for?(int?index?=?0;?index??len;?index++)?{
buf.append("\t");
}
return?buf;
}
private?static?int?getLen(int?xingqi)?{
return?xingqi?==?Calendar.SUNDAY???0?:?xingqi?-?1;
}
public?static?int?days(int?year,?int?month)?{
if?(month?!=?1)?{
return?DAYS[month];
}
if?((year?%?4?==?0??year?%?100?!=?0)?||?year?%?400?==?0)?{
return?29;
}
return?DAYS[month];
}
}
寫了個簡明的,
import java.util.Calendar;
import java.util.Scanner;
public class Test {
static public void main(String 參數[]){
Calendar c = Calendar.getInstance();
Scanner sc = new Scanner(System.in);
System.out.println("請輸入年份:");
int year= sc.nextInt();
c.set(Calendar.YEAR, year);
c.set(Calendar.MONTH, Calendar.JANUARY);
c.set(Calendar.DAY_OF_MONTH, 1);
while(c.get(Calendar.YEAR)==year){
int wday=c.get(Calendar.DAY_OF_WEEK);
int mday=c.get(Calendar.DAY_OF_MONTH);
if(mday==1){
System.out.println("\n日\t一\t二\t三\t四\t五\t六\t第"+(c.get(Calendar.MONTH)+1)+"月");
System.out.println("---------------------------------------------------");
for(int i=0;iwday-1;i++) System.out.print(" \t");
}
System.out.print(mday+"\t");
if(wday==7) System.out.println();
c.add(Calendar.DAY_OF_YEAR, 1);
}
}
}
=======
請輸入年份:
2012
日 一 二 三 四 五 六 第1月
---------------------------------------------------
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
日 一 二 三 四 五 六 第2月
---------------------------------------------------
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29
日 一 二 三 四 五 六 第3月
---------------------------------------------------
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
日 一 二 三 四 五 六 第4月
---------------------------------------------------
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
日 一 二 三 四 五 六 第5月
---------------------------------------------------
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
日 一 二 三 四 五 六 第6月
---------------------------------------------------
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
日 一 二 三 四 五 六 第7月
---------------------------------------------------
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
日 一 二 三 四 五 六 第8月
---------------------------------------------------
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
日 一 二 三 四 五 六 第9月
---------------------------------------------------
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30
日 一 二 三 四 五 六 第10月
---------------------------------------------------
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
日 一 二 三 四 五 六 第11月
---------------------------------------------------
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30
日 一 二 三 四 五 六 第12月
---------------------------------------------------
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
我給你貼上我在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; iweekDayNames.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編寫日歷代碼 java實現簡單的日歷功能
文章起源:http://vcdvsql.cn/article24/doishje.html
成都網站建設公司_創新互聯,為您提供網站策劃、移動網站建設、網站建設、域名注冊、App開發、網站維護
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯