import java.time.Instant
public final class Instant
implements Temporal, TemporalAdjuster, Comparable<Instant>, Serializable {
// 별의별 생성자와 메서드들..
}
Instant 클래스는 UTC(세계 협정시)를 기준으로 1970년 1월 1일 0시 0분 0초(에포크 타임)를 숫자 0으로 정하고,
그로부터 경과된 시간을 양수 또는 음수로 표현한다. 이것을 '시간을 타임스탬프로 다룬다' 라고 한다.
시간을 표현하기 위해 별도 타입없이 기본 데이터 타입으로 표현이 가능하고, 타임존이 UTC라서 타임스탬프의 기준이 어디인지
고려할 필요가 없다.
Instant 주요 메서드
1. Instant 생성
now() : 현재 UTC 기준 Instant 객체 반환 / Instant now = Instant.now();
ofEpochSecond(long epochSecond) : 주어진 epochSecond를 기준으로 Instant 객체 반환
Instant now2 = Instant.ofEpochSecond(now.getEpochSecond());
2. 필드에 저장된 값을 가져올 때
getEpochSecond() : UTC 기준 현재시간 - UTC를 초단위 타임스탬프로 반환
Instant now = Instant.now();
long epochSec = now.getEpochSecond();
System.out.println(epochSec) // 1750828197
getNano() : UTC 기준 현재시간 - UTC에 대해 나노초 단위? 타임스탬프로 반환함
toEpochMilli() : Instant 객체를 밀리초 값으로 반환한다
3. 기타 주요 메서드
plusSeconds(long secondsToAdd) : 현재 Instant에 주어진 secondToAdd를 더하여 새로운 Instant객체 반환
minusSeconds(long secondsToSubtract) : 현재 Instant에 주어진 secondsToSubtract를 빼서 새로운 Instant객체 반환
atZone(ZoneId zone) : Instant객체를 주어진 zone 시간대의 ZonedDateTime으로 변환해서 반환함?
package 날짜와시간_형식화;
import java.time.Instant;
import java.time.ZoneId;
import java.time.ZonedDateTime;
public class Instant01 {
public static void main(String[] args) {
Instant now = Instant.now();
System.out.println("현재시간 : " + now);
// ZonedDateTime : LocalDateTime + 시간대(time zone)
ZonedDateTime nowZoneTime = ZonedDateTime.now();
System.out.println("nowZoneTime : " + nowZoneTime);
Instant from = Instant.from(nowZoneTime);
System.out.println("from : " + from);
Instant epoch = Instant.ofEpochSecond(0); // 에포크 시간 지정
System.out.println("epoch : " + epoch);
Instant plusSecond = now.plusSeconds(3600);
System.out.println("현재시간에서 1시간 뒤 : " + plusSecond);
Instant minusSecond = now.minusSeconds(3600);
System.out.println("현재시간에서 1시간 전 : " + minusSecond);
long plusEpoch = plusSecond.getEpochSecond();
System.out.println("plusSecond를 초로 계산 : " + plusEpoch);
ZonedDateTime zonedDateTime = now.atZone(ZoneId.of("Asia/Seoul"));
System.out.println("Instant를 ZoneDateTime 서울시간대로 변환 : " + zonedDateTime);
}
}
결과
현재시간 : 2025-06-25T05:27:18.710447800Z
nowZoneTime : 2025-06-25T14:27:18.734241+09:00[Asia/Seoul]
from : 2025-06-25T05:27:18.734241Z
epoch : 1970-01-01T00:00:00Z
현재시간에서 1시간 뒤 : 2025-06-25T06:27:18.710447800Z
현재시간에서 1시간 전 : 2025-06-25T04:27:18.710447800Z
plusSecond를 초로 계산 : 1750832838
Instant를 ZoneDateTime 서울시간대로 변환 : 2025-06-25T14:27:18.710447800+09:00[Asia/Seoul]'JAVA' 카테고리의 다른 글
| 추상클래스 (3) | 2025.07.23 |
|---|---|
| 재귀호출(recursive call) (1) | 2025.07.20 |
| Path.resolve() (0) | 2025.06.21 |
| I/O - File 예제 (3) | 2025.06.20 |
| 네트워킹 - URL, URI (0) | 2025.06.20 |