Windows 날짜 표현


0

나는 유닉스에 대한 2038 년 버그에 대해 친구와 토론했다. 32 비트 타임 스탬프 버그 ).

우리는 실제로 윈도우가 날짜 자체를 저장하는 방법에 대해 궁금해하고 있었습니까? 나는 그것이 단순한 DateTime이라고 생각했지만 어떻게 시스템이 두 날짜 사이의 델타를 계산할 수 있었을까요?

그것은 가능한 다음 Windows가 내부적으로 타임 스탬프에 데이터를 저장 한 다음 DateTime으로 변환 할 수 있습니까?

답변:


4

1601 년 1 월 1 일 이후로 100 나노 초 간격을 나타내는 64 비트 부호있는 FILETIME이 있습니다. 64 비트가 큰 숫자이기 때문에 엄청나게 오랜 시간이 소요됩니다.

반면 CTIME (Unixtime)은 1970 년 1 월 1 일 이후 초를 나타내는 부호있는 32 비트 정수입니다.

더 나은 질문은 "Windows는 각 형식을 어디에서 사용합니까?"입니다. 시간을 저장하는 모든 일은 잠재적으로 원하는 시간 표현을 사용할 수 있습니다.

AD는 시스템, 파일 시스템 등과 같은 것을 사용합니까? 그 하나에 대한 해답에 관심을 가져라!


지금까지 내가 아는 한 적어도 .NET Framework는 파일 시간에서 시간을 가져옵니다.
Fredrik Mörk

그래서 내가 올바르게 이해한다면 1234567890으로 저장됩니까?
Erick

@ 에릭 : FILETIME이 아닌 CTIME처럼 보입니다. FILETIME은 미친 숫자입니다. 현재 : CTIME 및 FILETIME의 현재 1247703464는 1289217709140600000입니다.
geoffc

Windows에는 적어도 두 가지 또는 세 가지 방법으로 시간을 저장합니다. FILETIME은 NTFS 사용자가 사용하는 것으로, OLEDateTime이 있습니다. double 여기서 정수 부분은 요일과 분수 부분이며 날짜와 시간 및 시간대를 저장하는 사람이 읽을 수있는 문자열입니다.
Joey
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.