날짜와 시간
Timestamp(타임스탬프)
- 현재 시간을 long 타입의 값으로 가지고 있는데 그걸 타임스탬프라고 한다.
- 1970년 1월 1일 0시부터 1/1000초마다 1씩 증가하고 있는 값이다.
시간 단위
second > ㎳ > ㎲ > ㎱ > ㎰
밀리초 마이크로초 나노초 피코초
1/1,000 1/1,000,000 1/1,000,000,000 1/1,000,000,000,000
currentTimeMillis() nanoTime()
- 나노초 : 어떤 작업 수행시간을 정밀하게 계산할 때 사용하는 시간
• 타임스탬프 활용 예제
public static void ex01() {
long timstamp = System.currentTimeMillis();
System.out.println(timstamp);
}
public static void ex02() {
String s1 = "";
StringBuilder s2 = new StringBuilder();
long start = System.nanoTime();
for(char ch = 'A'; ch <= 'Z'; ch++) {
s2.append(ch);
}
long end = System.nanoTime();
System.out.println("수행시간: " + (end - start) + "㎱");
}
• java.util.Date
public static void main(String[] args) {
Date date1 = new Date();
System.out.println(date1);
Date date2 = new Date(24 * 60 * 60 * 1000);
System.out.println(date2);
}
• java.sql.Date
public static void main(String[] args) {
Date date = new Date(System.currentTimeMillis());
System.out.println(date);
Timestamp timestamp = new Timestamp(System.currentTimeMillis());
System.out.println(timestamp);
}
- 날짜, 시간 형식을 지정할 수 있는 클래스이다.
- 원하는 형식을 패턴(
Pattern
)으로 전달할 수 있다.
- 패턴
yy
: 년도 2자리
yyyy
: 년도 4자리
M
: 월 1자리(1~12)
MM
: 월 2자리(01~12)
MMM
: 문자열(1월~12월)
d
: 일 1자리(1~31)
dd
: 일 2자리(01~31)
E
: 요일(일~토)
a
: 오전/오후(오전, 오후)
h
: 12시각 1자리(1~12)
hh
: 12시각 2자리(01~12)
H
: 24시각 1자리(0~23)
HH
: 24시각 2자리(00~23)
m
: 분 1자리(0~59)
mm
: 분 2자리(00~59)
s
: 초 1자리(0~59)
ss
: 초 2자리(00~59)
• java.text.SimpleDateFormat 클래스
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd a hh:mm:ss");
String strDate = sdf.format(date);
System.out.println(strDate);
Calendar
- 특정 날짜를 생성할 수 있다.
- 날짜의 구성요소(년, 월, 일, ...)를 쉽게 가져다 사용할 수 있다.
• java.util.Calendar 클래스
public static void ex01() {
Calendar calendar = Calendar.getInstance();
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH) + 1;
int day = calendar.get(Calendar.DAY_OF_MONTH);
int weekNo = calendar.get(Calendar.DAY_OF_WEEK);
int ampm = calendar.get(Calendar.AM_PM);
int hour12 = calendar.get(Calendar.HOUR);
int hour24 = calendar.get(Calendar.HOUR_OF_DAY);
int minute = calendar.get(Calendar.MINUTE);
int second = calendar.get(Calendar.SECOND);
System.out.println(year);
System.out.println(month);
System.out.println(day);
System.out.println(weekNo);
System.out.println(ampm);
System.out.println(hour12);
System.out.println(hour24);
System.out.println(minute);
System.out.println(second);
}
public static void ex02() {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.YEAR, 2022);
calendar.add(Calendar.MONTH, 1);
calendar.add(Calendar.DAY_OF_MONTH, -1);
long timestamp = calendar.getTimeInMillis();
System.out.println(timestamp);
Date date = calendar.getTime();
System.out.println(date);
}
• LocalDateTime
- JDK 1.8 이후
- 날짜 :
java.time.LocalDate
- 시간 :
java.time.LocalTime
- 둘다 :
java.time.LocalDateTime
public static void ex01() {
LocalDate date1 = LocalDate.now();
System.out.println(date1);
LocalDate date2 = LocalDate.of(2023, 7, 31);
System.out.println(date2);
LocalDate date3 = LocalDate.parse("2023-07-31");
System.out.println(date3);
}
public static void ex02() {
LocalTime time1 = LocalTime.now();
System.out.println(time1);
LocalTime time2 = LocalTime.of(15, 25, 30);
System.out.println(time2);
LocalTime time3 = LocalTime.parse("14:25:30");
System.out.println(time3);
}
public static void ex03() {
LocalDateTime dateTime1 = LocalDateTime.now();
System.out.println(dateTime1);
LocalDateTime dateTime2 = LocalDateTime.of(2023, 7, 31, 15, 25, 30);
System.out.println(dateTime2);
LocalDateTime dateTime3 = LocalDateTime.parse("2023-07-31T15:28:30");
System.out.println(dateTime3);
}
public static void ex04() {
LocalDateTime dateTime = LocalDateTime.now();
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy년 MM월 dd일 E요일 a hh시 mm분 ss초");
String strDateTime = dtf.format(dateTime);
System.out.println(strDateTime);
}
public static void ex05() {
LocalDateTime dateTime = LocalDateTime.now();
int year = dateTime.getYear();
int month = dateTime.getMonthValue();
int day = dateTime.getDayOfMonth();
int hour = dateTime.getHour();
int minute = dateTime.getMinute();
int second = dateTime.getSecond();
System.out.println(year);
System.out.println(month);
System.out.println(day);
System.out.println(hour);
System.out.println(minute);
System.out.println(second);
}