LocalDate 클래스를 사용하여 Java에서 달력 디자인을 구현하는 방법
머리말
이 달력 디자인을 완료하기 전에 Java에서 사전 정의된 클래스 LocalDate
의 일부 사용법을 이해해야 합니다.LocalDate
的一些用法
语法
LocalDate.now() // 2022-07-01
会构造一个新对象,表示构造这个对象时的日期。
LocalDate.of(1999, 1, 1)
可以提供年、月和日来构造对应一个特定日期的对象:
当然,通常我们都希望将构造的对象保存在一个对象变量中:
LocalDate newYearsEve = LocalDate.of(1999, 1, 1);
当有了一个LocalDate
对象,可以用方法getYear
、getMonthValue
和getDayOfMonth
得到年、月和日:
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是当前日期,这个日期则用一个*
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(); }
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();
}
}
로그인 후 복사
연도, 월, 일을 제공하여 특정 날짜에 해당하는 객체를 생성할 수 있습니다.물론 일반적으로 생성된 객체를 객체 변수에 저장하려고 합니다.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(); } }
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天的日期
가 있는 경우 LocalDate 개체의 경우 <code>getYear
, getMonthValue
및 getDayOfMonth
메소드를 사용하여 연도, 월, 일을 가져올 수 있습니다. rrreee
위의 방법은 객체를 생성할 때 사용된 값과 똑같기 때문에 아무런 의미가 없어 보입니다. 그러나 때로는 계산된 날짜가 있을 수 있으며 이에 대해 자세히 알아보기 위해 이러한 메서드를 호출하고 싶을 수도 있습니다. 예를 들어,plusDays
메소드는 새로운 LocalDate
를 가져옵니다. 이 메소드가 적용되는 객체가 현재 객체라고 불리는 경우 이 새로운 날짜 객체는 지정된 숫자가 됩니다. 새 날짜: 🎜rrreee🎜aThousandDaysLater
는 원래 날짜에 1000일을 더합니다. 이 경우 위의 방법이 효과적입니다🎜🎜Calendar practice🎜🎜요구 사항: 사용 현재 날짜를 표시하는 LocalDate 클래스 월별 달력 형식은 다음과 같습니다. 🎜 🎜mon Tue Wed Thu FRI SUN🎜현재 날짜는
1* 2 3
4 5 6 8 9 10
11 12 13 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31🎜
*
로 표시됩니다. 보시다시피, 이 프로그램은 한 달의 일수와 주어진 날짜에 해당하는 요일을 계산하는 방법을 알아야 합니다. 🎜🎜단계별 분석🎜🎜①먼저 객체를 구성하고 현재 날짜로 초기화🎜rrreee🎜②현재 월과 날짜를 가져옵니다🎜rrreee🎜 ③날짜를 이번 달의 1일로 설정하고 요일을 가져옵니다🎜 rrreee🎜The weekday
변수는 DayOfWeek
유형의 개체로 설정됩니다. 요일에 대한 숫자 값을 가져오기 위해 이 개체의 getValue
메서드를 호출합니다. 우리는 정수를 얻을 것입니다. 월요일에는 1, 화요일에는 2를 반환하고, 일요일에는 7을 반환합니다. 🎜🎜4 달력의 첫 번째 줄이 들여쓰기되어 있으므로 해당 월의 첫 번째 날이 해당 요일을 가리킬 수 있습니다. 다음 코드는 첫 번째 줄의 헤더와 들여쓰기를 인쇄합니다. 🎜rrreee🎜⑤ 달력의 본문을 인쇄하고 날짜가 매월 매일 순회하는 루프를 입력합니다. 🎜🎜반복할 때마다 날짜 값을 인쇄합니다. 날짜가 현재 날짜인 경우 날짜는 *
로 표시됩니다. 그런 다음 날짜를 다음 날로 앞당깁니다. 새로운 주의 첫날에 도달하면 다음 줄이 인쇄됩니다: 🎜rrreee🎜 28일, 29일, 30일, 31일 등 해당 달에 몇 일이 있는지 알 수 없으므로 언제인지 알 수 없습니다. 끝은. 실제로 날짜가 당월인 한 반복은 계속됩니다🎜🎜전체 코드🎜rrreee🎜결론🎜🎜위 샘플 프로그램의 요점은 클래스의 인터페이스를 사용하여 공정하게 완료하는 방법을 보여주는 것입니다. 구현 세부 사항을 모르는 복잡한 작업🎜🎜LocalDate API🎜rrreee위 내용은 LocalDate 클래스를 사용하여 Java에서 달력 디자인을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Java의 난수 생성기 안내. 여기서는 예제를 통해 Java의 함수와 예제를 통해 두 가지 다른 생성기에 대해 설명합니다.

Java의 Weka 가이드. 여기에서는 소개, weka java 사용 방법, 플랫폼 유형 및 장점을 예제와 함께 설명합니다.

Java의 Smith Number 가이드. 여기서는 정의, Java에서 스미스 번호를 확인하는 방법에 대해 논의합니다. 코드 구현의 예.

이 기사에서는 가장 많이 묻는 Java Spring 면접 질문과 자세한 답변을 보관했습니다. 그래야 면접에 합격할 수 있습니다.

Java 8은 스트림 API를 소개하여 데이터 컬렉션을 처리하는 강력하고 표현적인 방법을 제공합니다. 그러나 스트림을 사용할 때 일반적인 질문은 다음과 같은 것입니다. 기존 루프는 조기 중단 또는 반환을 허용하지만 스트림의 Foreach 메소드는이 방법을 직접 지원하지 않습니다. 이 기사는 이유를 설명하고 스트림 처리 시스템에서 조기 종료를 구현하기위한 대체 방법을 탐색합니다. 추가 읽기 : Java Stream API 개선 스트림 foreach를 이해하십시오 Foreach 메소드는 스트림의 각 요소에서 하나의 작업을 수행하는 터미널 작동입니다. 디자인 의도입니다

Java의 TimeStamp to Date 안내. 여기서는 소개와 예제와 함께 Java에서 타임스탬프를 날짜로 변환하는 방법에 대해서도 설명합니다.
