用Java製作一個簡易的日曆

記實一下Java實現的一個日曆小軌範,了局圖如下:

用Java製作一個簡易的日曆

實現以上的了局,我們必要用到兩個類:SimpleDateFormat和Calenda。

首先看看這兩個類的用法:

類 SimpleDateFormat

SimpleDateFormat 是一個以與說話情形有關的編制來名目化息爭析日期的詳細類。它容許停止名目化(日期(Date) -> 文本(String))、解析(文本(String) -> 日期(Date))和標準化。

詳細要用到的編制

  • SimpleDateFormat(String pattern) 用給定的形式和默認說話情形的日期名目符號機關 SimpleDateFormat。
  • Date parse(String source) 從給定字符串的起頭解析文本以生成日期。

這裡我們使用SimpleDateFormat生成一個名目為“yyyy-MM”的實例,並經由過程parse編制將我們輸入的字符串轉換成日期(Date)工具。詳細實現如下:

View Code

類 Calendar

Calendar 類是一個籠統類,它為特定霎時與一組諸如 YEAR(年)、MONTH(月)、Date(日) 等日曆字段之間的轉換供給了一些編制,併為把持日曆字段(例如獲得下禮拜的日期)供給了一些編制。

日曆類使我們更好的對時辰停止把持,使我們可以隨意獲取到詳細的某個時辰字段,並能對時辰字段停止增、減、設置等把持。

日曆類是一個籠統類,所以我們不能對其停止實例化,但該類供給了一個靜態編制getInstance,所以我們可以經由過程該編制來獲取一個Calendar的工具實例。

我們的目的是做一個日曆,而日曆最重要的是獲取當月第一天是禮拜幾以及獲取該月的最大天數,Calendar都為我們供給了詳細的編制來實現。

要用到的編制

  • Calendar getInstance() 使用默認時區和說話情形獲得一個日曆。
  • void setTime(Date date) 使用給定的 Date 設置此 Calendar 的時辰。
  • int get(int field) 前往給定日曆字段的值。
  • int getActualMaximum(int field) 按照當前Calendar設置的時辰來獲取指定字段的最大值。

我們必要用getInstance編制來獲取Calendar實例,並經由過程上面SimpleDateFormat中字符串轉成的Date工具來給我們的Calendar設置時辰,末了經由過程get編制來獲取當月第一天是禮拜幾,並經由過程getActualMaximum編制來獲適當月天數。

注意的幾點:

  • Calendar獲取的MONTH是從0起頭,最大為11
  • Calendar獲取的DAY_OF_WEEK為從1起頭,最大為7,且1代表的是禮拜天,2~7代表是禮拜一到禮拜六

詳細實現如下:

獲取並設置Calendar工具

獲取當月1號禮拜幾

接下來我們要起頭打印日期了,由於我們的日期是從1起頭表示,不息到當月的最大一天,但我們表示的位置要和禮拜相對應,所以在這裡我把日期(day)起頭設置為“-firstWeekDay+1”,來填充前面所必要的空白。

我們還會涉及一個換行的問題,正常邏輯是每7天換行一次,而我們的日期是從“-firstWeekDay+1”起頭的,所以我們在計較換行時必要再將其加上。詳細實現見代碼吧。

打印日曆

如許,我們的日曆就完成啦。不外這裡還有別的一些問題,比如我們在捕捉名目轉換非常時,若是軌範繼續往下實行,則可能會產生空指針非常,不外再添加一個非常捕捉就好了。


分享到:


相關文章: