`
lhy5201314
  • 浏览: 121166 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

Delphi与Java中的日期互换

阅读更多
   在最近做的一个项目中用到了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中的日期
function ConvertJavaDateTimeToDelphiDateTime(Value: Int64): TDateTime;
begin
   Result := IncMilliSecond(StrToDate(''1970-1-1''), Value);
end;


//将Delphi中的日期转换为Java中的日期
function ConvertDelphiDateTimeToJavaDateTime(ADateTime: TDateTime): Extended;
begin
   Result := MilliSecondSpan(ADateTime, StrToDate(''1970-1-1''))
end;
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics