Windows程式設計之時間

2021-06-10 19:45:54 字數 3656 閱讀 1316

查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 直接向服務程式的控制處理函...