欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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之间进行日期值的通信时就需要进行一个转换。

Delphi与Java中的日期互换
            
    
    博客分类: JavaDelphi delphijava //将Java中的日期转换为Delphi中的日期
Delphi与Java中的日期互换
            
    
    博客分类: JavaDelphi delphijava 
functionConvertJavaDateTimeToDelphiDateTime(Value:Int64):TDateTime;
Delphi与Java中的日期互换
            
    
    博客分类: JavaDelphi delphijava begin
Delphi与Java中的日期互换
            
    
    博客分类: JavaDelphi delphijava Result:
=IncMilliSecond(StrToDate('1970-1-1'),Value);
Delphi与Java中的日期互换
            
    
    博客分类: JavaDelphi delphijava end;
Delphi与Java中的日期互换
            
    
    博客分类: JavaDelphi delphijava 
Delphi与Java中的日期互换
            
    
    博客分类: JavaDelphi delphijava 
//将Delphi中的日期转换为Java中的日期
Delphi与Java中的日期互换
            
    
    博客分类: JavaDelphi delphijava 
functionConvertDelphiDateTimeToJavaDateTime(ADateTime:TDateTime):Extended;
Delphi与Java中的日期互换
            
    
    博客分类: JavaDelphi delphijava begin
Delphi与Java中的日期互换
            
    
    博客分类: JavaDelphi delphijava Result:
=MilliSecondSpan(ADateTime,StrToDate('1970-1-1'))
Delphi与Java中的日期互换
            
    
    博客分类: JavaDelphi delphijava end;
Delphi与Java中的日期互换
            
    
    博客分类: JavaDelphi delphijava 

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关标签: delphi java