第五部分 自定义的Calendar接口示例
這些接口在寫日歷程序時可能會用到。
源代碼如下(CalendarSelfDefineTest.java):
import java.util.Calendar;
?
/**
?* 根據Calendar的API封裝的一些常用函數
?*/
public class CalendarSelfDefineTest {
?
?public static void main(String[] args) {
?Calendar cal = Calendar.getInstance();
?
?// 設置日期為“2013-09-18”
?cal.set(2013, Calendar.SEPTEMBER, 18);
?
?// 獲取“年”
?System.out.printf("year: %s\n", getYear(cal) );
?// 獲取“月”
?System.out.printf("month: %s\n", getMonth(cal) );
?// 獲取“上月”
?System.out.printf("previcou month: %s\n", getLastMonth(cal) );
?// 獲取“下月”
?System.out.printf("next month: %s\n", getNextMonth(cal) );
?// 獲取“日”
?System.out.printf("day: %s\n", getDay(cal) );
?// 獲取Cal對應星期幾
?System.out.printf("weekday: %s\n", getWeekDay(cal) );
?// 本月天數
?System.out.printf("Current Month days: %s\n", getMonthDays(cal) );
?// 上月天數
?System.out.printf("Previcous Month days: %s\n", getPrevMonthDays(cal) );
?// 下月天數
?System.out.printf("Next Month days: %s\n", getNextMonthDays(cal) );
?// 獲取當月第一天的星期幾
?System.out.printf("First day' weekday : %s\n", getFirstDayWeekday(cal) );
?// 獲取當前月最后一天的星期幾
?System.out.printf("Last day' weekday : %s\n", getLastDayWeekday(cal) );
?// 獲取上月最后一天的星期幾
?System.out.printf("PrevMonth Last day' weekday: %s\n", getLastDayWeekdayOfPrevMonth(cal) );
?// 獲取下月第一天的星期幾
?System.out.printf("NextMonth First day' weekday: %s\n", getFirstDayWeekdayOfNextMonth(cal) );
?}
?
?/**
?* 獲取“年”
?*?
?* @return 例如,2013-09-18,則返回2013
?*/
?public static int getYear(Calendar cal) {
?return cal.get(Calendar.YEAR);
?}?
?
?/**
?* 獲取“月”
?*?
?* @return 返回值可以為以下值:
?* JANUARY, FEBRUARY, MARCH, APRIL, MAY, JUNE, JULY, AUGUST, SEPTEMBER, OCTOBER, NOVEMBER, DECEMBER, UNDECIMBER。
?* 其中第一個月是 JANUARY,它為 0。
?*
?* 例如,2013-09-18,則返回8
?*/
?public static int getMonth(Calendar cal) {
?return cal.get(Calendar.MONTH);
?}?
?
?/**
?* 獲取“上一個月”
?*?
?* @return 返回值可以為以下值:
?* JANUARY, FEBRUARY, MARCH, APRIL, MAY, JUNE, JULY, AUGUST, SEPTEMBER, OCTOBER, NOVEMBER, DECEMBER, UNDECIMBER。
?* 其中第一個月是 JANUARY,它為 0。
?*
?* 例如,2012-01-12的上一個月是“11”(即DECEMBER)。
?*/
?public static int getLastMonth(Calendar cal) {
?return (cal.get(Calendar.MONTH) + 11) % 12;
?}?
?
?/**
?* 獲取“下一個月”
?*?
?* @return 返回值可以為以下值:
?* JANUARY, FEBRUARY, MARCH, APRIL, MAY, JUNE, JULY, AUGUST, SEPTEMBER, OCTOBER, NOVEMBER, DECEMBER, UNDECIMBER。
?* 其中第一個月是 JANUARY,它為 0。
?*
?* 例如,2013-12-12的下一個月是“1”(即DECEMBER)。
?*/
?public static int getNextMonth(Calendar cal) {
?return (cal.get(Calendar.MONTH) + 13) % 12;
?}?
?
?/**
?* 獲取“日”
?*
?* @return 例如,2013-09-18,則返回18
?*
?*/
?public static int getDay(Calendar cal) {
?return cal.get(Calendar.DATE);
?}?
?
?/**
?* 獲取“本月的天數”
?*
?* @return 例如,2013-09-18,則返回30
?*
?*/
?public static int getMonthDays(Calendar cal) {
?return cal.getActualMaximum(Calendar.DATE);?
?}?
?
?/**
?* 獲取“上一個月的天數”
?*
?* @return 例如,2013-01-18,則返回31 (因為2012-12有31天)
?*
?*/
?public static int getPrevMonthDays(Calendar cal) {
?Calendar tmpCal = (Calendar)cal.clone(); // 克隆cal。后面對tmpCal操作,就不會改變cal
?tmpCal.add(Calendar.MONTH, -1); ? // 設為“上一個月”
?return tmpCal.getActualMaximum(Calendar.DATE);?
?}?
?
?/**
?* 獲取“下一個月的天數”
?*
?* @return 例如,2013-12-18,則返回31 (因為2014-01有31天)
?*
?*/
?public static int getNextMonthDays(Calendar cal) {
?Calendar tmpCal = (Calendar)cal.clone(); // 克隆cal。后面對tmpCal操作,就不會改變cal
?tmpCal.add(Calendar.MONTH, 1); ? // 設為“下一個月”
?return tmpCal.getActualMaximum(Calendar.DATE);?
?}?
?
?/**
?* 獲取Cal對應星期幾
?*
?* @return 返回“星期幾”,可以為以下值:
?* SUNDAY、MONDAY、TUESDAY、WEDNESDAY、THURSDAY、FRIDAY 和 SATURDAY。
?* SUNDAY為1,MONDAY為2,依次類推。
?* 例如,2013-09-18(星期三),則返回4
?*/
?public static int getWeekDay(Calendar cal) {
?return cal.get(Calendar.DAY_OF_WEEK);
?}?
?
?
?/**
?* 獲取當月第一天對應星期幾
?*
?* @return SUNDAY為1,MONDAY為2,依次類推。
?*/
?public static int getFirstDayWeekday(Calendar cal) {
?
?Calendar tmpCal = (Calendar)cal.clone(); // 克隆cal。后面對tmpCal操作,就不會改變cal
?tmpCal.set(Calendar.DATE, 1); ? // 把日期設置為當月第一天?
?return tmpCal.get(Calendar.DAY_OF_WEEK);
?}?
?
?/**
?* 獲取當前月最后一天對應星期幾
?*?
?* @return SUNDAY為1,MONDAY為2,依次類推。
?*/
?public static int getLastDayWeekday(Calendar cal) {
?Calendar tmpCal = (Calendar)cal.clone(); // 克隆cal。后面對tmpCal操作,就不會改變cal
?tmpCal.set(Calendar.DATE, 1); ? // 把日期設置為當月第一天?
?tmpCal.roll(Calendar.DATE, -1); ? // 把日期設置為當月最后一天?
?return tmpCal.get(Calendar.DAY_OF_WEEK);
?}?
?
?
?/**
?* 獲取上月最后一天的星期幾
?*?
?* @return SUNDAY為1,MONDAY為2,依次類推。
?*/
?public static int getLastDayWeekdayOfPrevMonth(Calendar cal) {
?
?Calendar tmpCal = (Calendar)cal.clone(); // 克隆cal。后面對tmpCal操作,就不會改變cal
?tmpCal.set(Calendar.DATE, 1); ? // 把日期設置為當月第一天?
?tmpCal.add(Calendar.DATE, -1); ? // 把日期設置為上一個月最后一天?
?return tmpCal.get(Calendar.DAY_OF_WEEK);
?}?
?
?/**
?* 獲取下月第一天的星期偏移
?*?
?* @return SUNDAY為1,MONDAY為2,依次類推。
?*/
?public static int getFirstDayWeekdayOfNextMonth(Calendar cal) {
?
?Calendar tmpCal = (Calendar)cal.clone(); // 克隆cal。后面對tmpCal操作,就不會改變cal
?tmpCal.add(Calendar.MONTH, 1); ? // 設為“下一個月”
?tmpCal.set(Calendar.DATE, 1); ? // 設為“第一天”?
?return tmpCal.get(Calendar.DAY_OF_WEEK);
?}?
}
?
總結
以上是生活随笔為你收集整理的第五部分 自定义的Calendar接口示例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux如何在系统启动时自动加载模块
- 下一篇: ubuntu下和开发板下播放音乐