查msdn可以看到,windows中的時間分為以下幾類:
format
type
description
system
systemtime
year, month, day, hour, second, and millisecond, taken from the internal hardware clock.
local
systemtime
orfiletime
a system time or file time converted to the system's local time zone.
file
filetime
the number of 100-nanosecond intervals since january 1, 1601.
ms-dos
word
a packed word for the date, another for the time.
windows
dword
orulonglong
the number of milliseconds since the system was last started. when retrieved as a dword value, windows time cycles every 49.7 days.
interrupt count
ulonglong
the number of 100-nanosecond intervals since the system was last started.
下面來看看
systemtime
和filetime
這兩個構造體。
typedef struct _systemtime systemtime, *psystemtime;
這個結構體只是用來存放時間的,具體裡面存什麼時間,取決於時間是從哪個
api獲取的。
涉及到這個結構體的
api有:
api 作用
getlocaltime
取得systemtime
格式的本地時間。
getsystemtime
取得systemtime
格式的utc
時間。setlocaltime
設定systemtime
格式的本地時間。
setsystemtime
設定systemtime
格式的utc
時間。
typedef struct _filetime filetime, *pfiletime;
這個結構體說白了,就是用兩個dword存了乙個很大的數用來表示時間。
這個數是從2023年1月1日起到存放的時間為止,有多少個100納秒間隔。
涉及到這個結構體的
api有:
api 作用
comparefiletime
比較兩個filetime時間。
getfiletime
檢索乙個檔案或目錄的建立,上次訪問,和最後修改的日期和時間。
setfiletime設定
乙個檔案或目錄的建立,上次訪問,和最後修改的日期和時間。
filetimetolocalfiletime
將乙個utc
的檔案時間轉換為本地的檔案時間。
localfiletimetofiletime
本地檔案時間轉換到
utc檔案時間。
這裡需要說明的是
getfiletime
,setfiletime
操作的是
utc時間。
可以做個實驗:
假如我在東八區,現在本地時間是
11:40am
1、getsystemtime 得到3:40am(utc時間)
2、systemtimetofiletime 將3:40am(utc時間)轉化為filetime
3、setfiletime 將3:40am(utc時間)設定到檔案屬性。
4、用windows的資源管理器檢視剛才設定的檔案,時間是11:40am。
也就是說,檔案屬性中的存放的建立時間,上次訪問時間,最後修改時間都是
utc時間,
只不過用windows的資源管理器檢視時,該程式根據當前系統設定的時區,重新計算後顯示了。
驗證這一點也很簡單,將系統時區改為東七區,檢視剛才的檔案,現在檔案的時間變為10:40am了。
了解了這一點,大家可以考慮下面的2個問題該怎麼做呢?
問題1:如何將乙個systemtime格式的本地時間設定到乙個檔案的屬性中?
答案:1、systemtimetofiletime 將systemtime格式的本地時間轉化為filetime格式的本地時間
2、localfiletimetofiletime 本地檔案時間轉換到utc檔案時間。
3、setfiletime 設定檔案時間。
問題2:如何像資源管理器那樣,顯示檔案的本地時間。
答案:1、getfiletime 取得utc格式的檔案時間
2、filetimetolocalfiletime 將utc格式的檔案時間轉化為本地檔案時間
3、filetimetosystemtime 將本地檔案時間轉化為systemtime格式的時間。
還有兩個api是用來轉化systemtime
和filetime
這兩個構造體的。
api 作用
filetimetosystemtime
將乙個filetime
格式的時間轉化為
systemtime
格式的utc
時間。systemtimetofiletime
將乙個systemtime
格式的utc
時間轉化為
filetime
格式的時間。
c 程式設計之時間使用
對於時間,c 闡述了這樣幾種概念 1.clock tick cpu時鐘計時單元 2.calender time 日曆時間 3.broken down time 分解時間 4.local time 本地時間 5.coordinate universal time 協調世界時 我試用了前兩種計時方法 它...
linux下socket程式設計之時間伺服器
為網路上的使用者提供時間服務,即為網路使用者返回伺服器的當前時間 記錄發出請求的網路使用者的ip位址 儲存到檔案中 編寫時間服務客戶端timeclient,該客戶端能夠向伺服器傳送時間服務請求,並把獲得的時間返回給使用者。開發環境 fedora13,vim,gcc timeserver.c檔案。in...
Windows 程式設計之服務 2
除了系統定義的五種控制碼外 還有一種是 service control shutdown 使用者還可自定義控制碼,其取值範圍是128 255。使用者可以通過控制面板中的服務 項向特定服務程式的控制處理函式傳送控制碼,程式設計師可以呼叫系統函式 controlservice 直接向服務程式的控制處理函...