Win32的時間型別

2021-06-12 08:56:47 字數 3116 閱讀 6031

在win32時間型別有這樣幾種型別filetime/

systemtime/windowstime

先提個問題,如何計算當前時間100天以後的時間,在win32中。

1.systemtime

systemtime的定義是這樣

typedef

struct

_systemtime

systemtime;

很大,總共16個位元組。你可以呼叫getsystemtime來取得當前的時間

systemtime st;

::getsystemtime(

&st);

但是如果你呼叫 st.wday += 100;是達不到效果的,將會得到乙個無效的時間格式

2. filetime

filetime的定義是這樣的

typedef

struct

_filetime

filetime;

filetime這個名字很奇怪,其實他跟file並沒有直接關係,只是很多file的api中,都以這個為時間的型別,比如你可以呼叫getfiletime來取得file的建立/修改/訪問時間。

filetime是乙個__int64。可以這樣轉化成__int64

__int64 d =*

(__int64 *)

& st;

//or

__int64 d2;

memcpy(

&d2,

&st,

sizeof

(d2));

轉化為__int64是乙個以100納秒為單位的值

補習一下時間單位(

)1ms (毫秒)

1毫秒=0.001秒=10-3秒(millisecond)

1μs (微秒)

1微秒=0.000001=10-6秒(microsecond)

1ns (納秒)

1納秒=0.000000001秒=10-9秒(nanosecond)

1ps (皮秒)

1皮秒=0.000000000001秒=10-12秒

1fs (飛秒)

1飛秒=0.00000000000001秒=10-15秒

systemtime可以通過systemtimetofiletime來轉化為filetime

3.window time

::gettickcount()可以返回當前的以微秒為單位的時間,用在精度要求不高的場合,返回的只是乙個dword,四位元組。高一點的使用timegettime

如何計算當前時間100天以後的時間,在win32中。

應該這樣寫

const

__int64 nano100secinday

=(__int64)

10000000*60

*60*24

;systemtime st;

::getsystemtime(

& st);

filetime f;

::systemtimetofiletime(

&st,

& f);

ularge_integer now;

memcpy(

&now,&f,

sizeof

(now));

now

+=100

* nano100secinday;

memcpy(&f,

&now,

sizeof

(f));

filetimetosystemtime(&f,

& st);

最後:附上我寫的乙個小工具,刪除指定資料夾下面的過期檔案的乙個工具,並可以備份,支援子資料夾巢狀。

#include

<

windows.h

>

#include

<

cstdio

>

#include

<

string

>

using

namespace

std;

const

__int64 nano100secinday

=(__int64)

10000000*60

*60*24

;ularge_integer now;

intdays =14

;bool

backup

=false

;string

dst_dir;

string

backup_dir;

void

make_sure_dir_exist(

string

& file)

else }

}void

xdel(

const

char

* dir)

while

(true

)else }

}}else

else }

else

else }

}}if(

!findnextfile(hfind,

& ffd))

}findclose(hfind);

}int

main(

intargc,

char

** argv)

for(

inti=1

;i<

argc;

++ i)

}else

if(tmp.find(

"/m=")

!=-1

)else }

//get system time

systemtime st;

::getsystemtime(

& st);

filetime f;

::systemtimetofiletime(

&st,

& f);

memcpy(

&now,&f,

sizeof

(now));

xdel(argv[

1 ]);

return

0 ;}

Win32的時間型別

在win32時間型別有這樣幾種型別 filetime systemtime windowstime 先提個問題,如何計算當前時間100天以後的時間,在win32中。1.systemtime systemtime的定義是這樣 typedef struct systemtime systemtime 很...

win32 資料型別 vs c

1 在c 中做很多應用需要使用win32 api,但發現原型函式的一些資料型別看起來非常費勁,甚至在c 中 沒有 這種資料型別,查閱了一下資料,資料型別對應關係整理如下,希望對大家有用 2 bool system.int32 3 boolean system.int32 4 byte system....

win32 資料型別 vs c

1 在c 中做很多應用需要使用win32 api,但發現原型函式的一些資料型別看起來非常費勁,甚至在c 中 沒有 這種資料型別,查閱了一下資料,資料型別對應關係整理如下,希望對大家有用 2 bool system.int32 3 boolean system.int32 4 byte system....