문제

Windows의 공식 Python 2.5는 32 비트 타임 _t를 사용하는 Visual Studio.net 2003으로 빌드되었습니다. 따라서 올해가> 2038 인 경우 예외 만 제공합니다.

이것은 Python 2.6 (VS2008에서 Time_t를 64 비트로 변경)에 고정되어 있지만 많은 모듈이 이미 컴파일되어 있기 때문에 2.5를 사용하고 싶습니다.

그래서 여기에 내 질문이 있습니다 - 내 프로그램이 쉽게 2038 년을 처리하고 공식 Python 2.5를 사용하는 데 쉽게 처리 할 수있는 해결책이 있습니까? 예를 들어 일부 미리 만들어진 라이브러리와 같은 "time64" 또는 "장기"등 ...

2.6+로 업그레이드하거나 버그를 잊지 말라고 말하지 마십시오. 버그를 작동시켜야 할 이유가 있습니다. 그래서 여기에 질문을 게시합니다.

도움이 되었습니까?

해결책 3

내가 찾은 가장 좋은 솔루션은 Python 2.5의 소스 사본을 얻고 Time_T에서 64 비트까지의 컴파일러와 함께 시간 모듈을 다시 컴파일하는 것입니다 (예 : VS2005 또는 VS2008). -사이드 문제).

다른 팁

그만큼 datetime 표준 라이브러리의 모듈은 귀하에게 잘 작동해야합니다. 모듈에서 무엇이 필요합니까? time 저것 datetime 제안하지 않습니까?

나는 명성을 부르는 것을 의미하지는 않지만 왜 :

  • Python 2.5의 Y2038 버그는 잊어 버리십시오
  • 2038 년 이전의 어느 시점에서 Python 2.6으로 업그레이드

편집하다:명확히하기 위해 : (그리고 나는 진지하다 - 나는 재미를 찌르는 것을 의미하지 않았다)

아마도 현재와 2038 년 사이에 파이썬을 2.6 (또는 그 이후)으로 업그레이드 할 수 있습니다. 2012 년에 아마도 2015 년에 아마도 2037 년에.

응용 프로그램의 Python Timestamp 변수의 차이점을 알고 있다면 (Python 사용자가 많지 않습니다), 이것이 고려해야 할 중요한 측면 인 것 같습니다.

  • 어떤 데이터가 지속적으로 저장되고 있는지
  • Python 2.5가 지속 된 Python 2.5 타임 스탬프 변수가 Python 2.6을 사용하여 복원되는 방법 (아마도 "올바른 일을 할 것")
  • 오래된 데이터는 모호성이 발생할 정도로 오래 지속되는 형태로 저장 될지 여부 (예 : 1950 년에서 2049 년 사이에 고려할 때 "96"은 명확하지 않지만, 해당 데이터가 2230 년까지 유지되면 "96"은 1996 년이 될 수 있습니다. , 2096, 또는 2196)

답이 유리한 경우 2038 버그와 함께 일반 타임 스탬프를 사용하십시오. 응용 프로그램이 대체 타임 스탬프 (예 : 데이터베이스 타임 스탬프 문자열 등)와 함께 작동하도록하기 위해 수행 해야하는 재 설계/리팩토링의 양과 비교해야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top