如何取得本机机器时间(50分)

C

cook

Unregistered / Unconfirmed
GUEST, unregistred user!
我想知道机器上当时的时间
除了时、分、秒,还要知道毫秒,最好还有纳秒。
 
GetSystemTime
 
这只能到ms,ns秒怎么弄
 

只能用GetLocalTime!

var
_time:tsystemtime;

getlocaltime(_time);

_time.yeah,_time.month,_time....
 
设置和获得时间
procedure TForm1.GetLocalTimeButtonClick(Sender: TObject);
var
SystemTime: TSystemTime;
begin
GetLocalTime(SystemTime);
YearEdit.Text := IntToStr(SystemTime.wYear);
MonthEdit.Text := IntToStr(SystemTime.wMonth);
DayEdit.Text := IntToStr(SystemTime.wDay);
HourEdit.Text := IntToStr(SystemTime.wHour);
MinuteEdit.Text := IntToStr(SystemTime.wMinute);
SecondEdit.Text := IntToStr(SystemTime.wSecond);
end;

procedure TForm1.SetLocalTimeButtonClick(Sender: TObject);
var
SystemTime: TSystemTime;
begin
FillChar(SystemTime, SizeOf(SystemTime), 0);
SystemTime.wYear := StrToIntDef(YearEdit.Text, 0);
SystemTime.wMonth := StrToIntDef(MonthEdit.Text, 0);
SystemTime.wDay := StrToIntDef(DayEdit.Text, 0);
SystemTime.wHour := StrToIntDef(HourEdit.Text, 0);
SystemTime.wMinute := StrToIntDef(MinuteEdit.Text, 0);
SystemTime.wSecond := StrToIntDef(SecondEdit.Text, 0);
SetLocalTime(SystemTime);
end;
 
i dont know[:D]
 
用gettickcount可以精确到毫秒级!
 
豪秒我已经取到了
我现在需要的是纳秒
不是年月日时分秒
 
GZ怎么取纳秒!
 
天,你要编原子钟程序吗?实时性这么强!:)
thread_priority=15比大部分线程级别高的多,CPU老是保证给它时间
如果<2毫秒去取值的话,很容易荡机的,不要纳秒吧!
要不然就
asm
move ..
jmp...
.....
然后荡机:P
 
精确到NS不太现实呀,WINDOWS不是实时性的操作系统,所以不太可能到你说的精度
 
不好意思,我觉得问题挺有意思,再来一笔吧
只有个思路 因为1ns:=10^-6(s)=0.000001(s)
所以给它个EAX吧,32位的,AX应该也行,16位,不知道,安全为好
function GetNS(X:longint):LongInt;
asm
MOV X,EAX
INC EAX
MOV EAX,X
end;

private
var x:longint

procedure ButtonBeginClick ..
begin
x:=0;
timer1.enabled:=true;
end;

procedure timer1.ontimer
var y:longint;
z:string;
begin
inc(x);
y:=getns(x) mod 1000000;//求出余数
if y<1000 then //没超过1MS
z:=inttostr(y)
else if (y>=1000)and(y<=1000000) then //超过1MS取后三位
z:=copy(inttostr(y),length(inttostr(y))-3,3);
edit1.text:=z;
end;

这样的话也有不好,因为GETNS要取决于机器的速度,也受制于TIMER1,
而且每次给出的值要有一点延迟,就是ONPAINT过程的时间,这样看见结果的时候
刚才的NS早就过去100000...多了,没办法,实时性太强了
调API估计没希望了,好象没有这么牛的东西在里面,考虑的不全面,只给个思路
 
其实这和实时性没有什么关系的
因为我是取自己机器上的时间
我是想测试一下几个方法的运行速度
也就是同一目的的几个实现办法,看那一个更快
ms是一般是分不出来的,除非两个算法差别很大
 
倒~~~~玩儿我!
 
多人接受答案了。
 
顶部