中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java怎么利用LocalDate類實現日歷設計

發布時間:2022-07-28 10:44:27 來源:億速云 閱讀:143 作者:iii 欄目:開發技術

本文小編為大家詳細介紹“Java怎么利用LocalDate類實現日歷設計”,內容詳細,步驟清晰,細節處理妥當,希望這篇“Java怎么利用LocalDate類實現日歷設計”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。

前言

在我們完成這個日歷設計前,需要了解Java中的預定義類LocalDate的一些用法

語法

LocalDate.now() // 2022-07-01

會構造一個新對象,表示構造這個對象時的日期。

LocalDate.of(1999, 1, 1)

可以提供年、月和日來構造對應一個特定日期的對象:

當然,通常我們都希望將構造的對象保存在一個對象變量中:

LocalDate newYearsEve = LocalDate.of(1999, 1, 1);

當有了一個LocalDate對象,可以用方法getYeargetMonthValuegetDayOfMonth得到年、月和日:

int year = newYearsEve.getYear(); // 1999
int month = newYearsEve.getMonthValue(); // 1
int day = newYeaersEve.getDayOfMonth(); // 1

上面的方法看起來沒什么意義,因為這正是構造對象時使用的那些值。不過,有時可能有一個計算得到的日期,然后你希望調用這些方法來了解它的更多信息。例如,plusDays方法會得到一個新的LocalDate,如果把應用這個方法的對象稱為當前對象,這個新日期對象則是距當前對象指定天數的一個新日期:

LocalDate aThousandDaysLater = newYearsEve.plusDays(1000);
year = aThousandDaysLater.getYear();  // 2002
month = aThousandDaysLater.getMonthValue();  // 09
day = aThousandDaysLater.getDayOfMonth();  // 26

aThousandDaysLater是在原來的日期上加了1000天,這時使用上面的方法就有效了

日歷實戰

需求:使用LocalDate類展示當前月的日歷,格式如下:

Mon Tue Wed Thu Fri Sat Sun
                  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

當前日期使用*號標記。可以看到,這個程序需要知道如何計算某月份的天數以及一個給定日期相應是星期幾。

步驟分解

①先構造一個對象,并用當前的日期初始化

`LocalDate date = LocalDate.now();`

②獲取當前的月份和日期

int month = date.getMonthValue();
int today = date.getDayOfMonth();

③將date設置為這個月的第一天,并得到這一天為星期幾

date = date.minusDays(today - 1);  // 設置為當月的第一天
DayOfWeek weekday = date.getDayOfWeek();
int value = weekday.getValue();  // 1 = Monday    7 = Sunday

變量weekday設置為DayOfWeek類型的對象。我們調用這個對象的getValue方法來得到星期幾的一個數值。我們會得到一個整數。星期一就返回1,星期二就返回2,依次類推,星期日就返回7.

④由于日歷的第一行是縮進的,這樣可使月份的第一天指向相應的星期幾。下面代碼會打印表頭和第一行的縮進

System.out.println("Mon Tue Wed Thu Fri Sat Sun");
for (int i = 1; i < value; i++)
    System.out.print("    ");

⑤打印日歷的主體,進入一個循環,其中date遍歷一個月中的每一天。

每次迭代時,打印日期值。如果date是當前日期,這個日期則用一個*標記。接下來,把date推進到下一天。如果到達新的一周的第一天,則換行打印:

while (date.getMonthValue() == month) {
    System.out.printf("%3d", date.getDayOfMonth());
    if (date.getDayOfMonth() == today)
        System.out.print("*");
    else
        System.out.print(" ");
    date = date.plusDays(1);
    if (date.getDayOfWeek().getValue() == 1)
        System.out.println();
}

⑥什么時候結束呢?我們不知道這個月有幾天,是28、29、30還是31。實際上,只要date還在當月就要繼續迭代

完整代碼

import java.time.DayOfWeek;
import java.time.LocalDate;

/**
 * @author JKC
 * @Description:
 * @date 2022/7/1 10:53
 */
public class 制作日歷 {
    public static void main(String[] args) {
        // 創建一個日期對象,并進行初始化
        LocalDate date = LocalDate.now();
        System.out.println(date);
        // 獲取當前月份和日期
        int month = date.getMonthValue();
        int today = date.getDayOfMonth();

        // 將date設置為這個月的第一天,并得到這一天為星期幾
        date = date.minusDays(today - 1);
        // 設置為DayOfWeek類型的對象。調用這個對象的getValue方法來得到星期幾的一個數值
        DayOfWeek weekday = date.getDayOfWeek();
        int value = weekday.getValue();  // 1 = Monday    7 = Sunday

        System.out.println("Mon Tue Wed Thu Fri Sat Sun");
        for (int i = 1; i < value; i++)
            System.out.print("    ");

        while (date.getMonthValue() == month) {
            System.out.printf("%3d", date.getDayOfMonth());
            if (date.getDayOfMonth() == today)
                System.out.print("*");
            else
                System.out.print(" ");
            date = date.plusDays(1);
            if (date.getDayOfWeek().getValue() == 1)
                System.out.println();
        }
        if (date.getDayOfWeek().getValue() != 1)
            System.out.println();
    }
}

結論

上面的示例程序的重點是展示如何使用一個類的接口完成相當復雜的任務,而無須了解實現細節

LocalDate API

static LocalDate now()
 //構造一個表示當前日期的對象

static LocalDate of(int year, int month, int day)
//構造一個表示給定日期的對象

int getYear()
int getMonthValue()
int getDayOfMonth()
//得到當前日期的年、月和日。

DayOfWeek getDayOfWeek
//得到當前日期是星期幾,作為DayOfWeek類的一個實例返回。調用getValue來得到1~7之間的一個數,表示這是星期幾,1表示星期一,7表示星期日

LocalDate plusDays(int n)
LocalDate minusDays(int n)
//生成當前日期之后或之前n天的日期

讀到這里,這篇“Java怎么利用LocalDate類實現日歷設計”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

鲜城| 元阳县| 青神县| 高青县| 左贡县| 湘乡市| 会同县| 涿鹿县| 丹棱县| 舒城县| 富民县| 凭祥市| 抚顺市| 房产| 信丰县| 抚远县| 新龙县| 冷水江市| 太仆寺旗| 沭阳县| 临沭县| 乐业县| 方城县| 临朐县| 石泉县| 扶沟县| 宁德市| 襄垣县| 晋中市| 陆河县| 嵊州市| 同江市| 灌云县| 荔浦县| 布尔津县| 旺苍县| 东山县| 台中市| 什邡市| 扶风县| 耒阳市|