Java使用Calendar類實(shí)現(xiàn)動(dòng)態(tài)日歷
本文實(shí)例為大家分享了Java使用Calendar類實(shí)現(xiàn)動(dòng)態(tài)日歷的具體代碼,供大家參考,具體內(nèi)容如下
題目:
使用Calendar類實(shí)現(xiàn)一個(gè)動(dòng)態(tài)日歷,要求能夠通過輸入一個(gè)年份,月份顯示當(dāng)月的日歷布局,并且將周六周天使用"[]"包裹起來,另外要求如果顯示為當(dāng)月日歷時(shí),把當(dāng)天的日期使用"*"標(biāo)記出來。
步驟分析:
1.打印日歷
1.1當(dāng)月總天數(shù)
1.2當(dāng)月第一天是周幾(注意:月份是從0開始,星期是從周日(1)開始)


2.周末用【】包裹
3.當(dāng)前日期前加*號(hào)
代碼實(shí)現(xiàn):
package com.softeem.j2016.example;
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;
/**
* 1.打印日歷
* 1.1當(dāng)月總天數(shù)
* 1.2當(dāng)月第一天是周幾
* 2.周末用【】包裹
* 3.當(dāng)前日期加“*”
* @author admin
* 2021/7/23
*/
public class CalendarDemo {
//獲取一個(gè)日期實(shí)例
static Calendar c = Calendar.getInstance();
public static void show(int year,int month){
//獲取當(dāng)天日期
Date today = new Date();
//獲取系統(tǒng)時(shí)間的年月日
int y = today.getYear() +1900;
int m = today.getMonth() +1;
int d = today.getDate() ;
c.set(Calendar.YEAR,year);
c.set(Calendar.MONTH,month-1);
//設(shè)置當(dāng)前日歷的日期為本月的第一天(7.1)
c.set(Calendar.DAY_OF_MONTH,1);
//獲取當(dāng)前字段所表示日歷的可能具備最大值(本月總天數(shù))
int days = c.getActualMaximum(Calendar.DAY_OF_MONTH);
//獲取當(dāng)月第一天是周幾(7.1前面設(shè)置為本月第一天),周日=1;
int week = c.get(Calendar.DAY_OF_WEEK)-1;
//如果當(dāng)天是周日,則設(shè)置為7
week = week == 0?7 :week;
//打印空格數(shù)
System.out.printf("%d月一共有%d天,1號(hào)是周%d\n",month,days,week);
System.out.printf("==========【%d】年【%d】月==========\n",year,month);
System.out.println("一\t二\t三\t四\t五\t六\t日");
System.out.println("================================");
//計(jì)數(shù)器
int count = 0;
//(輸出空格)如果當(dāng)天是星期四則說明有三個(gè)空格,需要循環(huán)三次,則week-1
for (int i = 0; i < week - 1; i++) {
System.out.print("\t");
count++;
}
for (int i = 1; i <=days; i++) {
count++;
//根據(jù)日期的數(shù)值判斷是否是周末,如果是則用"[]"包裹
String date = (count % 7 ==6 || count % 7 == 0)?"["+i+"]\t":i+"\t";
//在當(dāng)前日期前使用"*"標(biāo)記
date = (y == year && m == month && d == i)?"*" + date:date;
//輸出日期
System.out.print(date);
//達(dá)到七位則換行
if (count%7==0){
System.out.println();
}
}
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("請(qǐng)輸入年份");
int year = sc.nextInt();
System.out.println("請(qǐng)輸入月份");
int month = sc.nextInt();
show(year,month);
}
}
效果截圖:

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
JVM(Java虛擬機(jī))簡(jiǎn)介(動(dòng)力節(jié)點(diǎn)Java學(xué)院整理)
Java虛擬機(jī)(Jvm)是可運(yùn)行Java代碼的假想計(jì)算機(jī)。Java虛擬機(jī)包括一套字節(jié)碼指令集、一組寄存器、一個(gè)棧、一個(gè)垃圾回收堆和一個(gè)存儲(chǔ)方法域。對(duì)java jvm 虛擬機(jī)感興趣的朋友通過本文一起學(xué)習(xí)吧2017-04-04
Elasticsearch 映射參數(shù)詳解 fields
這篇文章主要介紹了fields Elasticsearch 映射參數(shù)fields,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-07-07
MyBatis-Plus基于MyBatis封裝 BaseMapper的流程步驟
MyBatis-Plus作為 MyBatis 的增強(qiáng)框架,通過 BaseMapper 提供了通用的 CRUD 操作,極大地提升了開發(fā)效率,為了更透徹地理解其封裝機(jī)制,本文將采用鏈路追蹤的思維,從開發(fā)者調(diào)用接口開始,分析其如何基于 MyBatis 完成對(duì) BaseMapper 的封裝,需要的朋友可以參考下2025-04-04
Spring Cloud 系列之注冊(cè)中心 Eureka詳解
Netflix Eureka 是由 Netflix 開源的一款基于 REST 的服務(wù)發(fā)現(xiàn)組件,包括 Eureka Server 及 Eureka Client。這篇文章主要介紹了Spring Cloud 系列之注冊(cè)中心 Eureka,需要的朋友可以參考下2020-11-11
JAVA中Context的詳細(xì)介紹和實(shí)例分析
這篇文章主要介紹了JAVA中Context的詳細(xì)介紹和實(shí)例分析,Context是維持android各組件能夠正常工作的一個(gè)核心功能類。如果感興趣來學(xué)習(xí)一下2020-07-07
使用maven構(gòu)建java9 service實(shí)例詳解
本篇文章主要介紹了使用maven構(gòu)建java9 service實(shí)例詳解,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-02-02
Java 實(shí)現(xiàn)協(xié)同過濾算法推薦算法的示例代碼
本文介紹了協(xié)同過濾算法的概念,包括基于用戶的協(xié)同過濾和基于物品的協(xié)同過濾,文章詳細(xì)解釋了數(shù)據(jù)準(zhǔn)備、相似度計(jì)算以及如何在Java中實(shí)現(xiàn)這些算法,通過一個(gè)簡(jiǎn)單的用戶-物品評(píng)分矩陣示例,展示了如何計(jì)算用戶和物品之間的相似度,并推薦未評(píng)分的物品,感興趣的朋友一起看看吧2025-02-02
堆排序?qū)嵗?Java數(shù)組實(shí)現(xiàn))
下面小編就為大家分享一篇使用Java數(shù)組實(shí)現(xiàn)堆排序的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2017-12-12

