자바 날짜와 시간: 초보자를 위한 포괄 가이드

서론

안녕하세요, 미래의 자바 마법사 여러분! 오늘은 자바의 날짜와 시간의 왕국을 여행할 거예요. 아직 코드를 작성한 적이 없다고 해도 걱정 마세요 – 저는 여러분의 친절한 가이드가 될 거예요. 이 튜토리얼 끝에는 여러분이 프로처럼 날짜를 조작할 수 있을 거예요!

Java - Date & Time

재미있는 사실 하나로 시작해볼까요? 컴퓨터는 우리처럼 날짜를 알고 있지 않다는 것을 알고 계신가요? 그들에게 시간은 그저 초를 세는 매우 큰 숫자일 뿐입니다. 하지만 자바의 Date 클래스 덕분에 우리는 사람들에게 매우 의미 있는 방식으로 날짜를 다룰 수 있습니다.

자바 Date 클래스

클래스 선언

자바에서 Date 클래스는 java.util 패키지의 일부입니다. 사용하려면 자바 파일의 시작 부분에 임포트해야 합니다:

import java.util.Date;

이 줄은 자바에게 "오늘은 날짜를 다루게 될 것이니, 그 도구를 준비해 두세요!"라고 말하는 것과 같습니다.

클래스 생성자

Date 클래스는 여러 생성자가 있지만, 현대 자바 프로그래밍에서 주로 두 가지를 사용합니다:

  1. Date(): 현재 날짜와 시간을 나타내는 Date 객체를 생성합니다.
  2. Date(long milliseconds): 1970년 1월 1일 00:00:00 GMT("에포크")부터 밀리초로 측정된 특정 시각에 대한 Date 객체를 생성합니다.

이제 이를 실제로 보여드리겠습니다:

Date currentDate = new Date(); // 현재 날짜와 시간
Date specificDate = new Date(1000000000000L); // 2001년 9월 9일, 01:46:40 GMT

두 번째 줄에서의 큰 숫자는 에포크부터의 밀리초를 나타냅니다. 이를 기억해야 한다는 건 아니니, 자바가 날짜를 배후에서 어떻게 생각하는지 보여드렸을 뿐입니다.

클래스 메소드

Date 클래스는 여러 유용한 메소드를 제공합니다. 일부 가장 일반적인 메소드를 살펴보겠습니다:

메소드 설명
getTime() 1970년 1월 1일부터의 밀리초 수를 반환합니다
before(Date date) 이 날짜가 지정된 날짜보다 이전인지 확인합니다
after(Date date) 이 날짜가 지정된 날짜보다 이후인지 확인합니다
compareTo(Date date) 두 날짜를 비교합니다
toString() 날짜를 문자열 표현으로 변환합니다

이 메소드들을 어떻게 사용할 수 있는지 살펴보겠습니다:

Date now = new Date();
Date later = new Date(now.getTime() + 86400000); // 24시간 후

System.out.println("Current time: " + now.toString());
System.out.println("Is now before later? " + now.before(later));
System.out.println("Comparison result: " + now.compareTo(later));

이 예제에서는 now (현재 시간)와 later (24시간 후)의 두 Date 객체를 만들고, 현재 시간을 인쇄하고, nowlater보다 이전인지 확인하고, 두 날짜를 비교합니다.

상속된 메소드

Date 클래스는 슈퍼 클래스 Object에서 상속받은 메소드도 가지고 있습니다. 일부 예를 들어보겠습니다:

메소드 설명
clone() 이 객체의 복사본을 생성하고 반환합니다
equals(Object obj) 이 날짜를 다른 객체와 비교합니다
hashCode() 이 객체의 해시 코드 값을 반환합니다

현재 날짜의 Date 인스턴스 생성: 예제

이제 이 모든 것을 하나의 완전한 예제로 통합해보겠습니다:

import java.util.Date;

public class DateExample {
public static void main(String[] args) {
// 현재 날짜와 시간에 대한 Date 객체를 생성합니다
Date currentDate = new Date();

// 현재 날짜를 인쇄합니다
System.out.println("Current date and time: " + currentDate.toString());

// 밀리초로 시간을 얻고 인쇄합니다
long timeInMillis = currentDate.getTime();
System.out.println("Time in milliseconds since epoch: " + timeInMillis);

// 24시간 후의 날짜를 생성합니다
Date tomorrowDate = new Date(timeInMillis + 86400000);

// 날짜를 비교합니다
System.out.println("Is current date before tomorrow? " + currentDate.before(tomorrowDate));
System.out.println("Is current date after tomorrow? " + currentDate.after(tomorrowDate));

// compareTo를 사용하여 날짜를 비교합니다
int comparisonResult = currentDate.compareTo(tomorrowDate);
System.out.println("Comparison result: " + comparisonResult);
}
}

출력

이 프로그램을 실행하면 다음과 비슷한 출력이 나타날 것입니다:

Current date and time: Wed Jun 21 15:30:45 EDT 2023
Time in milliseconds since epoch: 1687377045123
Is current date before tomorrow? true
Is current date after tomorrow? false
Comparison result: -1

주의하세요, 정확한 출력은 프로그램을 실행한 시각에 따라 달라질 수 있습니다!

결론

축하합니다! 여러분은 자바에서 날짜를 다루는 첫 걸음을 내딛었습니다. Date 객체를 생성하고, 비교하고, 정보를 추출하는 기본 사항을 다루었습니다.

자바 여행을 계속하면서 더 강력한 도구를 발견할 것입니다. 예를 들어, 자바 8에서 도입된 새로운 java.time 패키지가 있습니다. 하지만 지금은 자신을 칭찬해야 합니다 – 여러분은 자바 시간의 노블레이드가 된 길에 걸어가고 있습니다!

기억하세요, 연습이 실력을 만든다. Date 클래스를 사용하여 자신만의 프로그램을 만들어 보세요. 아마도 정확한 나이를 일수로 계산하는 프로그램이나, 다음 생일까지 남은 일수를 알려주는 프로그램을 만들 수 있을 것입니다. 가능성은 끝없습니다!

코딩을 즐기세요, 여러분의 날짜는 항상 순서대로 되어 있기를!

Credits: Image by storyset