자바 - 날짜와 시간
안녕하세요, 미래의 자바 개발자 여러분! 오늘은 자바에서 날짜와 시간의 세계를 탐험하는 흥미로운 여정을 떠나보겠습니다. 여러분의 친절한 지역 컴퓨터 과학 교사로서, 이 가끔 까다로운主题을 항상 흥미로운 주제로 안내해 드리겠습니다. 그럼, 가상의 캘린더를 준비하고, 함께 빠져들어보겠습니다!
자바에서 날짜와 시간 소개
코딩을 시작하기 전에, 프로그래밍에서 날짜와 시간을 처리하는 중요성을 한 번 생각해 보겠습니다. 생일 알림 앱을 만들거나 새해 전야의 카운트다운 타이머를 구축한다고 상상해 보세요. 적절한 날짜와 시간 처리가 없으면, 여러분의 앱은 초콜릿 티포트보다도 유용하지 않습니다!
자바는 우리에게 날짜와 시간을 처리하는 강력한 도구를 제공합니다. 우리는 Date
와 Calendar
라는 두 가지 주요 클래스에 집중하겠습니다. 이제는 두려워하지 마세요 - 이 튜토리얼을 끝내면, 프로 �irkus 성우처럼 날짜를 굴릴 수 있을 거예요!
현재 날짜와 시간 가져오기
간단한 것부터 시작해볼까요? 현재 날짜와 시간을 가져오는 것입니다. 자바에게 "현재几点了?"라고 물어보는 것과 같아요.
import java.util.Date;
public class CurrentDateTime {
public static void main(String[] args) {
Date currentDate = new Date();
System.out.println("현재 날짜와 시간은: " + currentDate);
}
}
이 코드를 실행하면 다음과 같은 것을 볼 수 있습니다:
현재 날짜와 시간은: Wed Jun 16 15:30:45 EDT 2023
멋지죠? Date
클래스는 현재 순간의 스냅샷을 주입어줍니다. 시간의 셀피를 촬영하는 것과 같아요!
날짜 비교
이제 현재 날짜를 가져올 수 있으니, 날짜를 비교하는 방법을 배워보겠습니다. 이는 한 날짜가 다른 날짜보다 이전인지 후인지 확인하는 데 유용합니다.
import java.util.Date;
public class DateComparison {
public static void main(String[] args) {
Date date1 = new Date();
Date date2 = new Date(date1.getTime() + 86400000); // 1일을 밀리초로 추가
if (date1.before(date2)) {
System.out.println("date1은 date2보다 이전입니다");
}
if (date2.after(date1)) {
System.out.println("date2는 date1보다 후입니다");
}
if (date1.equals(date2)) {
System.out.println("date1은 date2와 같습니다");
}
}
}
이 예제에서는 두 개의 Date
객체를 만듭니다. date2
는 date1
보다 하루 뒤의 날짜로 설정됩니다 (하루의 밀리초인 86,400,000을 추가합니다). 그런 다음 before()
, after()
, equals()
메서드를 사용하여 비교합니다.
SimpleDateFormat을 사용한 날짜 형식화
순수한 날짜 출력은 항상 예쁘지 않을 수 있습니다. 이 때 SimpleDateFormat
이 도입됩니다. 이는 여러분의 날짜에게 메이크업 아티스트처럼, 원하는 모양으로 만들어주는 것입니다!
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateFormatting {
public static void main(String[] args) {
Date currentDate = new Date();
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String formattedDate = formatter.format(currentDate);
System.out.println("형식화된 날짜: " + formattedDate);
}
}
이 코드는 다음과 같은 출력을 보여줄 수 있습니다:
형식화된 날짜: 2023-06-16 15:45:30
훨씬 예쁘죠? "yyyy-MM-dd HH:mm:ss"은 SimpleDateFormat
에게 날짜를 어떻게 형식화할지 알려주는 패턴입니다. 이를 쪼개보겠습니다:
- yyyy: 네 자리 연도
- MM: 두 자리 월
- dd: 두 자리 일
- HH: 24시간 형식의 시간
- mm: 분
- ss: 초
SimpleDateFormat 형식 코드
여기 몇 가지 일반 형식 코드의 손쉬운 표가 있습니다:
형식 코드 | 설명 | 예시 |
---|---|---|
y | 연도 | 2023 |
M | 월 | 07 |
d | 일 | 16 |
H | 시간 (0-23) | 15 |
m | 분 | 45 |
s | 초 | 30 |
E | 주의 날 이름 | 월요일 |
D | 연의 일 | 167 |
w | 연의 주 | 24 |
문자열을 날짜로 구문 분석
때로는 날짜를 문자열로 수신하고 이를 Date
객체로 변환해야 할 수 있습니다. SimpleDateFormat
도 이를 도와줄 수 있습니다!
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateParsing {
public static void main(String[] args) {
String dateString = "2023-06-16 15:45:30";
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
Date date = formatter.parse(dateString);
System.out.println("구문 분석된 날짜: " + date);
} catch (ParseException e) {
System.out.println("날짜 구문 분석 오류: " + e.getMessage());
}
}
}
이 코드는 날짜의 문자열 표현을 받아서 다시 Date
객체로 변환합니다. 마법처럼, 하지만 세미콜론이 더 많아요!
경과 시간 측정
무엇인가를 수행하는 데 걸리는 시간을 측정하고 싶다고 가정해 봅시다. 자바는 이를 쉽게 만듭니다:
public class ElapsedTime {
public static void main(String[] args) {
long start = System.currentTimeMillis();
// 일부 작업 시뮬레이션
for (int i = 0; i < 1000000; i++) {
Math.sqrt(i);
}
long end = System.currentTimeMillis();
long elapsed = end - start;
System.out.println("걸린 시간: " + elapsed + " 밀리초");
}
}
이 코드는 0에서 999,999까지의 숫자의 平方根을 계산하는 데 걸리는 시간을 측정합니다. 코드 속에 스탑워치를 사용하는 것과 같아요!
GregorianCalendar 클래스
더 고급의 날짜와 시간 연산을 위해, 자바는 GregorianCalendar
클래스를 제공합니다. 이는 날짜 처리의 스위스 Army 톱니칼처럼 동작합니다!
import java.util.GregorianCalendar;
import java.util.Calendar;
public class GregorianCalendarExample {
public static void main(String[] args) {
GregorianCalendar gc = new GregorianCalendar();
int year = gc.get(Calendar.YEAR);
int month = gc.get(Calendar.MONTH) + 1; // Calendar에서 월은 0 기반
int day = gc.get(Calendar.DAY_OF_MONTH);
int hour = gc.get(Calendar.HOUR_OF_DAY);
int minute = gc.get(Calendar.MINUTE);
System.out.printf("현재 날짜와 시간: %04d-%02d-%02d %02d:%02d%n",
year, month, day, hour, minute);
gc.add(Calendar.DAY_OF_MONTH, 7); // 7일 추가
System.out.println("7일 추가한 날짜: " + gc.getTime());
boolean isLeapYear = gc.isLeapYear(year);
System.out.println(year + "는 윤년입니까? " + isLeapYear);
}
}
이 예제는 날짜의 개별 구성 요소를 얻고, 날짜에 시간을 추가하고, 심지어 연도가 윤년인지 확인하는 방법을 보여줍니다. 코드 속에 시간 기계를 가지고 있는 것과 같아요!
결론
축하합니다! 자바에서 날짜와 시간 처리의 첫 걸음을 내딛었습니다. 연습이 퍼포먼스를 완벽하게 만든다는 것을 기억하십시오. 이 개념들을 실험해 보지 마세요.谁知道? 아마도 다음 위대한 캘린더 앱이나 시간 관리 도구를 만들 수도 있습니다!
우리는 이 끝에, 여러분에게 작은 프로그래머 오믹이를 드리겠습니다: 프로그래머가 일을 어떻게 그만두나요? 그는 배열(raise)를 못 받았기 때문에요!
코딩을 즐겁게, 미래의 자바 마스터 여러분!
Credits: Image by storyset