EASY7

Unix 시간 계산법, Year 2038 Problem 본문

보안 공부/다양한 지식

Unix 시간 계산법, Year 2038 Problem

E.asiest 2019. 10. 28. 13:24

Unix 시간

1970년 1월 1일 00:00:00 협정 세계시(UTC) 부터의 경과 시간을 초로 환산하여 정수로 나타낸 것

 

이 유한한 정수 변수에 무한한 시간을 담을 수 있을까?

오버플로우 문제가 발생할 수 있다.

32비트 운영체제에서는 time-t자료형이 32bit 정수이다.

2^31-1초가 지나는 2038년 1월 19일 화요일 03:14:07 UTC가 오면 오버플로우가 발생해서 초기값(0)이 되어버리고 1970년 또는 1901년으로 돌아가서 32비트 유닉스 장비는 모두 장애가 난다. (Year 2038 Problem, Unix Millennium bug)

해결법은 장비들을 64비트로 바꾸는 것이다. 19년 후면 모두 64비트가 되어 있지 않을까?

 


** Unix 시간 -> 일반 시간 변환 사이트

https://heavenly-appear.tistory.com/260

 

**일반 시간 -> Unix 시간 변환 사이트

https://heavenly-appear.tistory.com/260

 

 

**수동으로 변환하기

유닉스 시간 : 998081552

초 계산

998081552/60 = 16,634,692 +0.53

0.53 * 60 = 31.8 = 32

16,634,692(분) +32(초)

 

분 계산

16,634,692/60 = 277,244 + 0.86

0.86 * 60 = 51.6 = 52

277,244(시) + 52(분)

 

시 계산

277,244 / 24=11,551+0.83

0.83*24=19.92=20

11,551(일)+20(시)

 

일 계산

11,551/365=31+0.65

0.65*365=237

31(년)+237(일)

 

1970.1.1 0:0:0 + 31년 237일 20시 52분 32초 = 2001.8.25 20시 52분 32초

(자동으로 했을 때 : 2001-8-18 5:52:32)

소수점, 윤년 계산 때문에 오차가 다소 심하지만.. 대강 맞는 것 같다)

 

 

<일 계산할 때 도움되는 사이트>

https://search.naver.com/search.naver?sm=tab_hty.top&where=nexearch&query=%EB%82%A0%EC%A7%9C+%EA%B3%84%EC%82%B0&oquery=%EB%82%A0%EC%A7%9C+%EA%B3%84%EC%8B%BC&tqi=UkioglprvTVssNZ%2Bshwssssssrs-011438

 

 

 

 

 

 

Comments