Delphi与Java中的日期互换
程序员文章站
2022-06-07 08:57:33
...
在最近做的一个项目中用到了Java和Delphi,发现它们不能正确读取对方的日期类型,如在Java中写入一个值为“2007-12-1”的日期值,通过Delphi读取却不是这个值了。
通过查阅资料,发现两者对日期类型的定义略有不同。Java中日期使用的是长整型进行存储的,它表示距“1970-1-1”的毫秒数。如“1970-1-2”是在“1970-1-1”后的86400000毫秒,所以Java中就使用86400000表示“1970-1-2”这个日期。由于长整型是带符号的,所以我们可以使用负的毫秒数来表示在“1970-1-1”之前的日期。而Delphi中的日期则是使用双精度类型进行存储的,整数部分表示距“1899-12-30”的天数,小数部分表示小时。如“2.75”这个数值则表示“1900-1-1 6:00PM”,“-1.25”则表示“1899-12-29 6:00 AM”。
由于两者的日期类型的起始日期不一样,即相同的“0”值在两者中表示不同的日期。那么在Java与Delphi之间进行日期值的通信时就需要进行一个转换。
//将Java中的日期转换为Delphi中的日期
functionConvertJavaDateTimeToDelphiDateTime(Value:Int64):TDateTime;
begin
Result:=IncMilliSecond(StrToDate('1970-1-1'),Value);
end;
//将Delphi中的日期转换为Java中的日期
functionConvertDelphiDateTimeToJavaDateTime(ADateTime:TDateTime):Extended;
begin
Result:=MilliSecondSpan(ADateTime,StrToDate('1970-1-1'))
end;
functionConvertJavaDateTimeToDelphiDateTime(Value:Int64):TDateTime;
begin
Result:=IncMilliSecond(StrToDate('1970-1-1'),Value);
end;
//将Delphi中的日期转换为Java中的日期
functionConvertDelphiDateTimeToJavaDateTime(ADateTime:TDateTime):Extended;
begin
Result:=MilliSecondSpan(ADateTime,StrToDate('1970-1-1'))
end;
版权声明:本文为博主原创文章,未经博主允许不得转载。
上一篇: 热毛巾竟能治疗六种疾病 太神奇了!
下一篇: 便秘怎么调理 教你自我按摩九种方法