![시간이 끝나면 무슨 일이 일어날까요? [복사]](https://linux55.com/image/92718/%EC%8B%9C%EA%B0%84%EC%9D%B4%20%EB%81%9D%EB%82%98%EB%A9%B4%20%EB%AC%B4%EC%8A%A8%20%EC%9D%BC%EC%9D%B4%20%EC%9D%BC%EC%96%B4%EB%82%A0%EA%B9%8C%EC%9A%94%3F%20%5B%EB%B3%B5%EC%82%AC%5D.png)
유닉스 시간을 절약하기 위해 부호 있는 정수 값을 사용하는 이유가 궁금합니다. 분명히, 부호 없는 정수를 사용하는 것이 더 합리적입니다. 왜냐하면 시간은 뒤로 갈 수 없고 음수 시간은 불가능하기 때문입니다. 그러나 2038년 1월 19일에 Unix 시간이 만료됩니다. 이는 우리가 알고 있는 시간의 종말이 될 것입니다. 2,147,483,647에서 -2,147,483,648로 갈 것입니다... 좋지 않습니다.
그렇다면 부호 있는 정수를 사용하는 이유는 무엇입니까? 시간이 다가올 때 이에 대한 수정을 구현하는 것이 얼마나 어려울까요?
답변1
OpenBSD는 최근 32비트에서 64비트 시간 값으로 이동하여 시간이 끝날 때까지 약간의 여유 공간을 제공합니다. 이 수정 사항의 난이도는 Unix와 해당 지원 수준(및 2038년에서 시간 이동이 얼마나 멀리 떨어져 있는지)에 따라 다릅니다.
% date -r $((2**31))
Tue Jan 19 03:14:08 GMT 2038
% date -r $((2**51))
Mon Jun 19 13:54:08 GMT 71358665