在最近做的一个项目中用到了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;
版权声明:本文为博主原创文章,未经博主允许不得转载。
相关推荐
2. **JNI接口定义**:在Delphi中,我们需要创建一个动态链接库(DLL),该库将作为Delphi与Java的接口。首先,我们需要定义Java端的JNI函数,这通常是在Java的`.java`文件中,使用`native`关键字声明。然后,通过`...
本文将深入探讨Java与Delphi的结合,以及如何在实际项目中充分利用这种结合。 1. **Java与Delphi简介** - Java是一种跨平台的面向对象编程语言,以其“一次编写,到处运行”的特性而闻名。它提供了丰富的类库,...
通过测试,Delphi的RSA算法无法与Java的RSA算法兼容,经过各种周折最终尝试了Delphi调用Java的类的方法进行RSA加密解密;这是非常令人振奋的解决方案,但是前期也遇到不少问题。 在网上找到...
在IT行业中,跨语言通信是常见的需求,尤其是在不同的开发环境中,比如本文提到的Delphi 7与Java的交互。Delphi 7是一款历史悠久且功能强大的Windows应用程序开发工具,而Java则是一种广泛应用于服务器端和跨平台...
总的来说,这个“delphi调用java类,包.rar”的内容很可能是关于如何在Delphi中通过JNI来调用Java类的实例代码和指导文档,帮助开发者理解和实现Delphi与Java的集成。对于需要在Delphi项目中利用Java功能的开发者来...
Delphi 11作为一款强大的Windows桌面应用程序开发工具,有时需要与Java环境进行交互,这通常涉及到跨语言调用接口。本篇将详细介绍如何在Delphi 11中调用Java接口,并传递参数及接收返回结果。 1. **JNI(Java ...
在IT领域,跨平台开发是常见的需求,而Java与Delphi作为两种不同的编程语言,各自拥有强大的生态系统。本文将深入探讨如何在Delphi 10.3中利用JNI(Java Native Interface)技术来调用Java的函数,实现两者之间的...
在IT行业中,跨平台开发是常见的需求,而Delphi作为一款强大的Windows应用程序开发工具,有时候我们需要让它与Java环境进行交互。本篇文章将详细介绍如何在Delphi中利用SDK来执行Java代码,实现两者之间的无缝对接。...
本组代码采用标准AES算法(基础算法引用ElAES.pas,感谢作者),代码支持AES/ECB/PKCS5Padding、AES/CBC/PKCS5Padding 密钥长度128/192/256bit,密钥0填充,Delphi与JAVA互相加解密。
例如,Java中的boolean与Delphi的Boolean不同,需要特别处理。此外,Delphi的指针类型在Java中通常转化为对象引用或接口。 3. **面向对象设计**:Java强调面向对象编程,而Delphi虽然也支持面向对象,但在某些方面...
本篇将详细探讨如何在Delphi中调用Java函数,实现这两种不同编程语言之间的交互。Delphi是一款基于Object Pascal的集成开发环境,而Java则是一种广泛使用的、跨平台的编程语言。两者通过特定的接口技术可以相互调用...
在IT行业中,跨平台开发是常见的需求,而Delphi作为一款强大的Windows应用程序开发工具,有时需要与Java平台进行交互。本教程将详细讲解如何在Delphi中调用Java接口,利用JNI(Java Native Interface)技术实现这一...
本资源"Delphi与Java互通AES加解密算法.zip"正专注于解决这一问题,提供了一套适用于Delphi和Java环境的AES(Advanced Encryption Standard)加解密算法,确保在两种语言之间进行安全的数据传输。 AES,即高级加密...
本话题主要关注的是Delphi与Java之间的数据交换,以及如何使用3DES(Triple DES)加密算法确保数据在传输过程中的安全性。3DES是一种广泛使用的对称加密算法,以其强大的安全性和良好的兼容性而闻名。 首先,...
本资源"Delphi.rar_AES_AES加密_delphi AES加密_delphi 加解密_java delphi aes"提供的是在Delphi编程环境中实现AES加密和解密的示例代码,其目标是与Java平台上的加解密过程保持兼容。 首先,让我们深入了解一下...
解决Delphi 中文MD5签名和Java MD5签名不一致的问题。
然而,当需要与Java环境交互时,如何在Delphi XE7中调用Java的JAR文件就成为一个挑战。本篇将深入探讨如何实现这一目标。 首先,了解Java本地接口(JNI)是关键。JNI允许Java代码调用本地(如C/C++)代码,反之亦然...
测试通过的delphi与java实现aes算法对文件进行加密和解密操作的代码,delphi端是delphi xe3,java端是oracle jdk 1.8版本,在win32和win64模式下编译测试均通过没有问题。 注意:这个示例只调整了128位aes stream方式...
3. 注释保留:转换过程中,Java源代码中的注释通常会被保留在转换后的Delphi代码中,方便理解和修改。 4. 异常处理:Java的异常处理机制(try-catch-finally)会转换为Delphi的except-on-finally结构。 5. 静态与非...
本文将深入探讨Java和Delphi中实现DES加解密的源代码,以及如何实现这两个不同平台之间的互操作性。 DES算法是在1970年代由IBM开发,后来被美国国家标准局(NIST)采纳为标准。它基于64位的数据块进行操作,使用56...