유닉스 시간을 절약하기 위해 부호 있는 정수 값을 사용하는 이유가 궁금합니다. 분명히, 부호 없는 정수를 사용하는 것이 더 합리적입니다. 왜냐하면 시간은 뒤로 갈 수 없고 음수 시간은 불가능하기 때문입니다. 그러나 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