如何将当前的日期转换为16进制???(100分)

  • 主题发起人 主题发起人 清风杨
  • 开始时间 开始时间

清风杨

Unregistered / Unconfirmed
GUEST, unregistred user!
实例 00 E0 71 44 代表 2006-5-23 00:00:00
00 56 A1 44 代表 2006-6-28 00:00:00
00 F9 A3 44 代表 2006-6-30 00:00:00

我找了很多资料 ,但是没有我要的结果,还请各位大侠出手相救!!万分感谢!
 
function StrToHex(AStr: string): string; //字符串TO十六进制
var
I : Integer;
Tmp: string;
begin
Result := '';
for I := 1 to Length(AStr) do
begin
Result := Result + Format('%2x', [Byte(AStr)]);
end;
I := Pos(' ', Result);
While I <> 0 do
begin
Result :='0';
I := Pos(' ', Result);
end;
end;
 
To 中鼎 不好意思 你这个函数我这里有一个类似的 但是得到的结果和上边需要的完全不同
还请多看看 帮帮忙
 
请各位大侠帮忙,分数可以加~~
 
看了下,楼主给的十六进制数应该是1970年1月1日起的秒数
00 E0 71 44 --> $4471E000=1148313600秒
1148313600/60/60/24=13290.666667天
 
To 黑星星 那有没有简单的方法去获得当前日期的秒数呢??

不希望Tell me 连乘得到
 
自己写个函数呗,又不麻烦。
 
d:=StrToDateTime('1970-01-01');
d2:=StrToDateTime('2006-06-27');
i:=Trunc((d2-d)*24*60*60);
Edit1.Text:=IntToHex(i,8);
Showmessage(DateTimeToStr(UnixToDatetime(HexToInt1(Edit1.text))+8/24));

这样出来的结果为 2006-6-27 08:00:00 相差8个小时

怎么回事??
 
有没有人帮忙,,还是题目简单,不值的大家出手?
 
结果为 2006-6-27 08:00:00 没错啊。
StrToDateTime('2006-06-27');只有日期,没有时间,等于00:00:00,加上8/24就是加8个小时,当然是2006-6-27 08:00:00
 
datetimetounix的函数原形是这样的,非常简单:
/////////////////////////////////////////
function datetimetounixw(avalue:tdatetime):int64;
begin
result:=round(avalue-25569)*3600*24;
end;
//测试代码
procedure TForm1.Button1Click(Sender: TObject);
begin
showmessage(format('%x',[datetimetounixw(now)]));
end;
 
好象也不怎么准,具体差在哪里没细研究
你自己看看代码

function datetimetounixw(avalue:tdatetime):string;
begin
result:=format('%x',[round(avalue-25569)*3600*24]);
end;

function unixtodatetime(avalue:string):tdatetime;
begin
result:=(strtoint64('$'+avalue) div (3600*24)+25569);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
s:string;
begin
showmessage(datetimetounixw(now));
setlength(s,20);
datetimetostring(s,'yyyy/mm/dd hh:mm:ss',unixtodatetime('44a5bb00'));
showmessage(s);
end;
 
To wp231957 你的结果和我得出的结果一样 但和程序要求的仍不一致
例 2006-6-28 得出结果 44 A1 C6 80
我需要的结果 00 56 A1 44
 
00 56 11 44

44 11 56 00
只是一个顺序问题,这个容易办
不过准确性这个问题不好办呢
 
顺序好说 我现在必须要相同的数据 不然 从服务器 得不到数据

不过 仍然很感谢你
 
如果一直没人解决的话
晚上回家查查资料,好象在哪里见过这方面的资料
 
wp231957
你有资料 ?? 那就麻烦你回家找找
谢谢
 
d:=StrToDateTime('1970-01-01');
d2:=StrToDateTime('2006-06-27');
i:=Trunc((d2-d)*24*60*60)-8*60*60;//减去时区差
Edit1.Text:=IntToHex(i,8);
Showmessage(DateTimeToStr(UnixToDatetime(HexToInt1(Edit1.text))+8/24));

问题解决 谢谢各位大侠的帮助
 
多人接受答案了。
 

Similar threads

I
回复
0
查看
897
import
I
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
827
import
I
后退
顶部