반응형
Java에서 시간을 확인하는 방법
테스트 환경
$ lsb_release -d
Description: Ubuntu 24.04.1 LTS
$ java --version
java 21.0.7 2025-04-15 LTS
Java(TM) SE Runtime Environment (build 21.0.7+8-LTS-245)
Java HotSpot(TM) 64-Bit Server VM (build 21.0.7+8-LTS-245, mixed mode, sharing)
시간 확인
date
Wed May 28 03:28:07 PM KST 2025
시스템 시간대 확인
timedatectl
Local time: Wed 2025-05-28 15:28:49 KST
Universal time: Wed 2025-05-28 06:28:49 UTC
RTC time: Wed 2025-05-28 06:28:49
Time zone: Asia/Seoul (KST, +0900)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
/etc/localtime 확인
$ ls -l /etc/localtime
lrwxrwxrwx 1 root root 30 May 26 14:21 /etc/localtime -> /usr/share/zoneinfo/Asia/Seoul
zoneinfo 확인
$ ls -l /usr/share/zoneinfo/Asia/Seoul
-rw-r--r-- 1 root root 617 Mar 27 02:28 /usr/share/zoneinfo/Asia/Seoul
$ strings /usr/share/zoneinfo/Asia/Seoul
TZif2
5qx
TZif2
KST-9
Java 시간 확인
Java 파일 생성
cat <<EOF > ShowTime.java
import java.time.ZoneId;
public class ShowTime { // 클래스 이름을 ShowTime으로 변경
public static void main(String[] args) {
// JVM의 기본 타임존 확인
ZoneId defaultZoneId = ZoneId.systemDefault();
System.out.println("JVM Default ZoneId: " + defaultZoneId.getId());
}
}
EOF
더보기
---
ZoneId 목록 파일 저장
import java.time.ZonedDateTime;
import java.time.ZoneId;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.io.IOException;
import java.util.stream.Collectors;
public class ShowTime {
public static void main(String[] args) {
// 현재 타임존과 시간 출력
ZoneId defaultZoneId = ZoneId.systemDefault();
ZonedDateTime currentTime = ZonedDateTime.now(defaultZoneId);
System.out.println("Current TimeZone: " + defaultZoneId.getId());
System.out.println("Current Time: " + currentTime);
// ZoneId 목록 파일 출력 (콘솔 출력 없음)
try {
Files.write(
Paths.get("zoneids.txt"),
ZoneId.getAvailableZoneIds()
.stream()
.collect(Collectors.toList())
);
System.out.println("\nZoneId 목록이 zoneids.txt 파일에 저장되었습니다.");
} catch (IOException e) {
System.err.println("ZoneId 목록 파일 저장 중 오류 발생: " + e.getMessage());
}
}
}
---
컴파일
javac ShowTime.java
실행
java ShowTime
JVM Default ZoneId: Etc/UTC
Java(.java, .class) 파일 삭제
rm ShowTime.java ShowTime.class
/etc/timezone 파일 변경
/etc/timezone 확인
더보기
---
$ cat /etc/timezone
Etc/UTC
---
/etc/timezone 파일을 수정
echo "Asia/Seoul" | sudo tee /etc/timezone
tzdata 재구성
sudo dpkg-reconfigure tzdata
/etc/timezone 확인
$ cat /etc/timezone
Asia/Seoul
$ java ShowTime
JVM Default ZoneId: Asia/Seoul
JVM의 타임존은 user.timezone 속성이 명시되지 않은 경우, 운영체제의 타임존 설정을 따릅니다.
일반적으로 Java는 시스템 타임존을 결정할 때 /etc/timezone 파일의 값을 참조하는 것으로 보입니다.
반응형
'리눅스' 카테고리의 다른 글
우분투 24.04에서 systemd-resolved를 비활성화하는 방법 (0) | 2025.05.28 |
---|---|
VMware ESXi에서 실행 중인 우분투 가상 머신에서 GRUB 부트 메뉴에 진입하는 방법 (0) | 2025.05.28 |
우분투 24.04에서 rc.local을 활성화하는 방법 (0) | 2025.05.27 |
SSL 인증서 레벨의 특징과 주요 사용 사례 (0) | 2025.05.26 |
우분투 24.04에서 스크립트를 사용하여 최신 버전의 Docker를 설치하는 방법 (0) | 2025.05.26 |