java實現日曆功能
阿新 • • 發佈:2018-12-10
完成一個 java application應用程式,輸出一份當前所在時區當前時間的一個月的日曆(1號到28/29/30/31號,以及每天對應為星期幾)。
思路:
(1)獲得這一年是否是閏年。閏年的2月只有28天,非閏年2月有29天。其他1、3、5、7、8、10、12月每月31天,2、4、6、9、11每月30天。
(2)根據上一步獲得這個月的總天數。
(3)獲得這個月第一天是星期幾。然後依次填充。直到這個月最後一天。
程式碼如下:
import java.text.*;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Scanner;
class MyCalendar {
public static void main(String[] args) throws ParseException
{
int maxDay = 0;
int firstDay = 0;
int currentDay = 0;
System.out.println("請輸入一個日期:格式為:2020-02-02");
Scanner sc = new Scanner(System.in);
String str = sc.nextLine(); //鍵盤輸入日期格式的字串
DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Date date = format.parse(str); //將字串轉化為指定的日期格式
Calendar calendar = new GregorianCalendar();
calendar.setTime(date); //將日期轉化為日曆
maxDay = calendar.getActualMaximum(Calendar.DATE); //當前日期中當前月對應的最大天數
currentDay = calendar.get(Calendar.DATE); //當前日期中的當前天
calendar.set(Calendar.DATE, 1); // 設定為當前月的第一天
firstDay = calendar.get(Calendar.DAY_OF_WEEK); //當前日期中當前月第一天對應的星期數
System.out.println("------------------------------------------------------");
System.out.println("週日\t週一\t週二\t週三\t週四\t週五\t週六\n");
System.out.println("------------------------------------------------------");
for (int j = 1; j < firstDay; j++) //當前月第一天之前以空格輸出
{
System.out.print("\t");
}
for (int i = 1; i <= maxDay; i++) //輸出當月每一天的號數
{
if (i == currentDay) //以*i表示當天日期
{
System.out.print("*");
}
System.out.print(i + "\t");
if ((i - (8 - firstDay)) % 7 == 0) //以七天為一個迴圈輸出所有天數
{
System.out.println("\n");
}
}
}
}
結果如下: