在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....