java學習筆記--輸出本月日曆
摘自java核心技術卷I,輸出本月的日曆,程式碼如下:
package com.handkoo.test;
import java.text.DateFormatSymbols;
import java.util.Calendar;
import java.util.GregorianCalendar;
public class CanendarDemo {
public static void main(String[] args) {
/* 初始化物件和資料 */
// 構造一個日曆物件
GregorianCalendar d = new GregorianCalendar();
// 獲取到當前時間的日和月
int today = d.get(Calendar.DAY_OF_MONTH);
int month = d.get(Calendar.MONTH);
/* 獲取本月第一天為周幾,同時獲取一週的開始為周幾 */
// 設定日曆為當前月的第一天
d.set(Calendar.DAY_OF_MONTH,1);
// 獲取當前月第一天為這個星期的第幾周
int weekday = d.get(Calendar.DAY_OF_WEEK);
// 獲取星期的起始日
int firstDayOfWeek = d.getFirstDayOfWeek();
/* 確定要縮排的空格數 */
// 確定列印需要縮排的距離,從當前的周挪到起始周,用indet來計數
int indent = 0;
while(weekday!=firstDayOfWeek){
indent++;
d.add(Calendar.DAY_OF_MONTH, -1);
weekday = d.get(Calendar.DAY_OF_WEEK);
}
/* 列印出周的標題 */
// 獲取到所有周的名稱,並列印輸出第一行
String[] weekdayNames = new DateFormatSymbols().getShortWeekdays();
// 當前的weekday表示每週的第一天,使用do迴圈,在執行中如果為第一週,則表示一週的迴圈結束
do {
// 格式化列印輸出
System.out.printf("%4s",weekdayNames[weekday]);
// 天數加1
d.add(Calendar.DAY_OF_MONTH, 1);
// 獲取週數
weekday = d.get(Calendar.DAY_OF_WEEK);
} while (weekday!=firstDayOfWeek);
// 換行
System.out.println();
/* 列印縮排的部分 */
// 接著準備輸出日期,在輸出日期日期前需要輸出空格,index表示需要縮排的空格數
for(int i = 1;i<=indent;i++){
System.out.print(" ");
}
/* 列印出日期,如果為下一週就換行 */
// 將d設定為本月的第一天
d.set(Calendar.DAY_OF_MONTH,1);
do {
// 獲取日期
int day = d.get(Calendar.DAY_OF_MONTH);
// 答應日期
System.out.printf("%3d",day);
// 設定列印的格式,如果是今天就在後面輸出*
if(day== today){
System.out.print("*");
}else{
System.out.print(" ");
}
// 增加天數,迴圈
d.add(Calendar.DAY_OF_MONTH, 1);
// 獲取當前日期的週數
weekday = d.get(Calendar.DAY_OF_WEEK);
// 如果是第一天就換行
if(weekday==firstDayOfWeek){
System.out.println();
}
} while (d.get(Calendar.MONTH)==month);
// 最後優化輸出,如果不是第一週,就再次列印換行
if(weekday!=firstDayOfWeek){
System.out.println();
}
}
}
相關文章
- C++ 學習筆記之——輸入和輸出C++筆記
- 學習日曆-初始
- 01_Numpy學習筆記(下):輸入和輸出筆記
- Java小白的學習日記一(自用筆記)Java筆記
- JAVA筆記(12)——輸入和輸出Java筆記
- Solidity語言學習筆記————24、輸入輸出引數Solid筆記
- JAVA學習筆記Java筆記
- 《JAVA學習指南》學習筆記Java筆記
- 前端學習02:jQuery 日曆前端jQuery
- 第三週學習日曆
- C語言學習日記(4)——輸出當前時間C語言
- java學習筆記6Java筆記
- Java學習筆記4Java筆記
- Java JNI 學習筆記Java筆記
- Java 集合學習筆記Java筆記
- 榮耀筆記本有望本月19日釋出 一個榮耀新物種筆記
- Java學習筆記記錄(二)Java筆記
- 10.10java學習日記Java
- java學習日記-字元流Java字元
- TCP 學習筆記(三) 可靠傳輸TCP筆記
- 3月25日學習筆記筆記
- 3月23日學習筆記筆記
- Go學習筆記-Zap日誌Go筆記
- Java JDK 9學習筆記JavaJDK筆記
- TensorFlow Java API 學習筆記JavaAPI筆記
- Java學習筆記系列-反射Java筆記反射
- 【部分】Java速成學習筆記Java筆記
- Java基礎學習筆記Java筆記
- Java學習筆記--運算子Java筆記
- Kotlin for Java Developers 學習筆記KotlinJavaDeveloper筆記
- 【Java學習筆記】Collections集合Java筆記
- java學習筆記(異常)Java筆記
- 【學習筆記】關於Freemark程式碼輸出值的問題筆記
- java學習日記-java環境的配置Java
- Bullet 學習筆記之 BugList 生產日記筆記
- (一)Java併發學習筆記Java筆記
- JAVA 學習併發筆記(一)Java筆記
- 2018.03.12、Java-Thread學習筆記Javathread筆記
- Java學習筆記(七十二)—— CookieJava筆記Cookie