Windows FILETIME结构是否包含闰秒?
发布时间:2020-12-13 20:50:01 所属栏目:Windows 来源:网络整理
导读:FILETIME http://msdn.microsoft.com/en-us/library/ms724284(VS.85).aspx 结构从1601年1月1日开始(大概是当天的开始) 根据微软文档,但这是否包括闰秒? 注意:在互联网上使用一些时间回答陌生人的问题很慷慨如果你真的不知道答案,那就不是特别有用了。另
FILETIME
http://msdn.microsoft.com/en-us/library/ms724284(VS.85).aspx
结构从1601年1月1日开始(大概是当天的开始) 根据微软文档,但这是否包括闰秒? 注意:在互联网上使用一些时间回答陌生人的问题很慷慨如果你真的不知道答案,那就不是特别有用了。另外,23秒不是一个完全不合理的时间,令人担忧。许多Windows机器的时钟精确到23秒钟内。
问题不应该是FILETIME包括闰秒。
它应该是:
简单的答案是“不”。 FileTimeToSystemTime返回秒为0..59。 更简单的答案是:“当然不,怎么可能?” 我的Windows 2000机器不知道自从发布以来的十年里增加了2个闰秒。对FILETIME的任何解释都是错误的。 最后,我们可以通过直接的实验观察来确定海报的答案,而不是依靠逻辑, var systemTime: TSystemTime; fileTime: TFileTime; begin //Construct a system-time for the 12/31/2008 11:59:59 pm ZeroMemory(@systemTime,SizeOf(systemTime)); systemtime.wYear := 2008; systemTime.wMonth := 12; systemTime.wDay := 31; systemTime.wHour := 23; systemtime.wMinute := 59; systemtime.wSecond := 59; //Convert it to a file time SystemTimeToFileTime(systemTime,{var}fileTime); //There was a leap second 12/31/2008 11:59:60 pm //Add one second to our filetime to reach the leap second filetime.dwLowDateTime := fileTime.dwLowDateTime+10000000; //10,000,000 * 100ns = 1s //Convert the filetime,sitting on a leap second,to a displayable system time FileTimeToSystemTime(fileTime,{var}systemTime); //And now print the system time ShowMessage(DateTimeToStr(SystemTimeToDateTime(systemTime))); 加一秒钟 12/31/2008 11:59:59pm 给 1/1/2009 12:00:00am 而不是 1/1/2009 11:59:60pm 证明完毕 原来的海报可能不喜欢,但是上帝故意装备它,以便一年不能被一天分割。他只是为了搞砸程序员。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- windows-server-2008-r2 – 自动从商店中删除受信任的根证书
- windows-7 – Windows 7 RC在BootCamp上与MacBook Pro有任何
- windows – 平移大型桌面的远程桌面客户端?
- windows – DNS无法解析主机名; nslookup可以
- windows-server-2012 – 我的DC可以用作远程桌面授权服务器
- windows – 如何将巨大的文件复制到远程共享文件夹?
- 默认Microsoft Windows Update Server
- active-directory – 如何在断开连接的笔记本电脑上减少错误
- windows – 临时FTP帐户?
- 拒绝服务 – 阻止IP地址,防止DoS攻击
推荐文章
站长推荐
热点阅读