Java Snippets

Java Unix 타임스탬프 스니펫

현재 에포크 초, 밀리초, Instant 변환, 시간대 인식 포맷, 최신 java.time API를 위한 Java 예제.

Current Unix timestamp (seconds)
import java.time.Instant;

Instant.now().getEpochSecond()
Current Unix timestamp (milliseconds)
System.currentTimeMillis()
// or
Instant.now().toEpochMilli()
Instant from timestamp
import java.time.Instant;

Instant.ofEpochSecond(1700000000)
Instant.ofEpochMilli(1700000000000L)
Formatted string (UTC)
import java.time.*;
import java.time.format.DateTimeFormatter;

Instant.ofEpochSecond(1700000000)
    .atZone(ZoneOffset.UTC)
    .format(DateTimeFormatter.ISO_DATE_TIME)
In a specific timezone
import java.time.*;

Instant.ofEpochSecond(1700000000)
    .atZone(ZoneId.of("America/New_York"))
    .toString()

Java 타임스탬프 기본

최신 Java 코드는 타임스탬프 작업에 java.time.Instant를 선호해야 합니다. Instant.now().getEpochSecond()는 Unix 초를, Instant.now().toEpochMilli()는 Unix 밀리초를 줍니다.

Java millis를 Unix 타임스탬프로

Java 코드는 흔히 System.currentTimeMillis()(epoch 밀리초의 long)로 시작합니다. 초 단위 표준 Unix 타임스탬프는 1000으로 나누세요. 날짜는 Instant를 만드세요. long을 어느 단위를 기대하는지 모르는 여러 API에 넘기지 말고 아래의 명시적 변환을 사용하세요.

  • long millis = System.currentTimeMillis(); // 13 digits, epoch ms
  • long secs = System.currentTimeMillis() / 1000L; // millis to Unix timestamp
  • Instant inst = Instant.ofEpochMilli(millis); // currentTimeMillis to date (Instant)
  • String iso = Instant.ofEpochMilli(millis).toString(); // ISO 8601 UTC
  • ZonedDateTime zdt = Instant.ofEpochMilli(millis).atZone(ZoneId.of("UTC"));
  • System.nanoTime()은 경과 시간 측정에만 사용 — epoch 기반이 아님

시간대 인식 Java 형식화

현지 시각을 표시할 때는 ZoneId로 Instant를 ZonedDateTime으로 변환하세요. 저장과 비교는 Instant나 UTC로 유지하고, 형식화는 애플리케이션 가장자리에서만 하세요.

Java 운영 참고 사항

java.time API는 순간, 현지 달력 값, 시간대 인식 표시를 분리합니다. 저장하거나 비교할 순간에는 Instant를 사용하세요. 사용자·테넌트·보고서에 대한 ZoneId를 선택한 뒤에만 ZonedDateTime을 사용하세요. 오래된 라이브러리가 요구하지 않는 한 레거시 Date와 Calendar는 피하세요.

  • Unix 초에는 Instant.now().getEpochSecond()를 사용
  • 밀리초에는 Instant.now().toEpochMilli() 또는 System.currentTimeMillis()를 사용
  • 표준 Unix 타임스탬프를 받을 때는 Instant.ofEpochSecond(seconds)를 사용
  • 간결한 UTC API 출력에는 DateTimeFormatter.ISO_INSTANT를 사용

FAQ

새 코드는 Date와 Instant 중 무엇을 써야 하나?
타임스탬프 저장과 비교에는 Instant를 사용하세요. 오래된 Date는 옛 라이브러리에 여전히 나타날 수 있지만, java.time이 초·밀리초·시간대 인식 형식화에 더 명확합니다.
Instant와 ZonedDateTime의 차이는?
Instant는 UTC의 정확한 순간입니다. ZonedDateTime은 그 순간을 ZoneId와 함께 표시한 것으로, 사용자 대상 날짜와 보고서에 유용합니다.
Java의 epoch 값을 검증하려면?
값을 저장하기 전에 Instant.ofEpochSecond(seconds) 또는 Instant.ofEpochMilli(milliseconds)를 출력하세요. ISO 출력은 수신 시스템이 기대하는 UTC 순간과 일치해야 합니다.
Java에서 millis를 Unix 타임스탬프로 변환하려면?
System.currentTimeMillis()를 1000L로 나눠 Unix 초 long을 얻으세요: long secs = System.currentTimeMillis() / 1000L. Instant.ofEpochSecond(secs)로 다시 Instant로 되돌릴 수 있습니다.
Java에서 currentTimeMillis를 날짜로 변환하려면?
Instant로 감싸세요: Instant.ofEpochMilli(System.currentTimeMillis()). 표시에는 ZoneId와 결합하세요: ZonedDateTime.ofInstant(instant, ZoneId.of("UTC")) 또는 다른 IANA 지역.