|簡體中文

比思論壇

 找回密碼
 按這成為會員
搜索



查看: 7|回復: 0
打印 上一主題 下一主題

windows时间概念

[複製鏈接]

64

主題

0

好友

537

積分

中學生

Rank: 3Rank: 3

  • TA的每日心情
    擦汗
    前天 09:20
  • 簽到天數: 224 天

    [LV.7]常住居民III

    推廣值
    0
    貢獻值
    0
    金錢
    3
    威望
    537
    主題
    64
    跳轉到指定樓層
    樓主
    發表於 前天 10:16 |只看該作者 |倒序瀏覽
    首先,先从简单的说起,本地时间(LocalTime),也就是系统设置时区的当前时间!比如说当前系统设置的时区为“(UTC+08:00)北京,重庆,香港特别行政区,乌鲁木齐”(东八区),系统的右下角通知区域显示的时间为“2012/5/18 16:57”,那么这个时间就是当前系统的本地时间!
      要说清楚什么是系统时间(SystemTime)之前先来了解一下格林威治时间。本初子午线被定义为通过格林威治经线的位置,相对这条经线的时区向东递增,向西递减,每隔一个时区,相差一个小时。那么,上面例子中的东八区的时间就是相对于格林威治时间加上了八个小时!而Windows的系统时间是就是格林威治时间!知道了这一点,本地时间与系统时间之间的转换也就很容易了。将上面的本地时间“2012/5/18 16:57”转换到系统时间只要减去八个小时就行了!转换结果为“2012/5/18 8:57”。
      本地时间与系统时间的都是用SYSTEMTIME结构来存储的,关于这个结构参见MSDN。
      文件时间(FileTime)的存储方式则与本地时间、系统时间有些不同,它使用64位的数据长度存储。引用MSDN上面的一句原话“A file time is a 64-bit value that represents the number of 100-nanosecond intervals that have elapsed since 12:00 A.M. January 1, 1601 Coordinated Universal Time (UTC).”这个64位的值记录了自1601年1月1日0点以来的以100纳秒(ns)为单位的格林威治时间间隔,注意,是纳秒,不是毫秒!将这个数据转换为秒的话要除以10^7(1秒 = 10^9纳秒,这里是100纳秒单位)!了解了上面的格林威治时间,理解这个很容易!
      本地时间与系统时间之间的转换上面已经说了,这其中的转换因子就是当前系统的时区,也可以通过SystemTimeToTzSpecificLocalTime、TzSpecificLocalTimeToSystemTime两个函数来完成,这两个函数在转换时都要指定时区信息,具体用法参考MSDN。下面谈谈系统时间与文件时间、本地时间与文件时间之间的转换。因为用到文件时间的地方不仅仅限于记录文件的创建、修改时间。而且还可以通过文件时间的转换函数来完成系统时间与本地时间的转换!
      1. 系统时间与文件时间的转换:SystemTimeToFileTime、FileTimeToSystemTime  2. 本地时间与文件时间的转换:LocalFileTimeToFileTime、FileTimeToLocalFileTime
      从上面可以看出,本地时间与系统时间的转换也可以通过文件时间来完成。这里需要注意一点的是,本地时间和文件时间都是对于当前系统的时区而言的,这样会出现同一个文件放到不同时区的系统中时,文件的创建时间,修改时间等等都会不一样。因为文件创建时间,修改时间等都是以文件时间方式记录的,操作系统在将文件时间转换为本地时间时要根据系统当前的时区作为参考。所以,在系统时间与本地时间之间转换时最好的方式是采用文件时间函数,这样时区的问题会由操作系统解决。此外,还有一些函数使用的数据结构中也用到了文件时间,比如用于检索系统定时信息的GetSystemTimes的参数、查询系统时间信息时用到的NtQuerySystemInformation中的SYSTEM_TIME_INFORMATION结构,都是给出的文件时间!知道了这一点,将它们转换为本地时间就很容易了。

    您需要登錄後才可以回帖 登錄 | 按這成為會員

    重要聲明:本論壇是以即時上載留言的方式運作,比思論壇對所有留言的真實性、完整性及立場等,不負任何法律責任。而一切留言之言論只代表留言者個人意見,並非本網站之立場,讀者及用戶不應信賴內容,並應自行判斷內容之真實性。於有關情形下,讀者及用戶應尋求專業意見(如涉及醫療、法律或投資等問題)。 由於本論壇受到「即時上載留言」運作方式所規限,故不能完全監察所有留言,若讀者及用戶發現有留言出現問題,請聯絡我們比思論壇有權刪除任何留言及拒絕任何人士上載留言 (刪除前或不會作事先警告及通知 ),同時亦有不刪除留言的權利,如有任何爭議,管理員擁有最終的詮釋權。用戶切勿撰寫粗言穢語、誹謗、渲染色情暴力或人身攻擊的言論,敬請自律。本網站保留一切法律權利。

    手機版| 廣告聯繫

    GMT+8, 2025-8-19 02:28 , Processed in 0.022827 second(s), 16 queries , Gzip On, Memcache On.

    Powered by Discuz! X2.5

    © 2001-2012 Comsenz Inc.

    回頂部