将Java中的转换日期转换为整数然后转换为Delphi时间
发布时间:2020-12-15 00:26:10 所属栏目:Java 来源:网络整理
导读:我有一个服务器设备配置,我需要使用UDP更改装备日期配置.服务器是用 Java和设备编写的,用Delphi编写. 所以,数据流是这样的: Java服务器(Java日期) – UDP(整数日期) – 德尔福设备(德尔福日期) 问题是,当我将日期作为整数传递时,java会计算1970年的毫秒数和
我有一个服务器设备配置,我需要使用UDP更改装备日期配置.服务器是用
Java和设备编写的,用Delphi编写.
所以,数据流是这样的: Java服务器(Java日期) – > UDP(整数日期) – >德尔福设备(德尔福日期) 问题是,当我将日期作为整数传递时,java会计算1970年的毫秒数和德尔福数秒.我将日期传递给以下日期:today.getTime()/ 1000,但设备将此视为2008年的日期,当时我们在2012年. 我可以更改Java代码,但设备是第三方,我无法访问它的源代码. Java和Delphi日期解析之间存在差异,允许这种差异吗? 编辑: 解决方法
Unix时间戳与Java中使用的时间戳相同.另一方面,Delphi的TDateTime基于18/22/18上午12:01的开始日期(它是COM兼容性的东西),因此需要进行一些转换.这些功能会做到;我还添加了一段快速的测试代码,以显示转换在两种方式下都能正常工作.
const UnixStartDate = 25569.0; function DateTimeToUnixTime(const ADateTime: TDateTime): Cardinal; begin Result := Round(ADateTime - UnixStartDate) * 86400; end; function UnixTimeToDateTime(const UnixDate: Cardinal): TDateTime; begin Result := UnixDate / 86400 + UnixStartDate; end; procedure TForm1.Button1Click(Sender: TObject); var StartDate: TDateTime; UnixDate: Cardinal; begin StartDate := Date(); Memo1.Lines.Add('Start Date: ' + DateToStr(StartDate)); UnixDate := DateTimeToUnixTime(StartDate); Memo1.Lines.Add('DateTimeToUnixTime = ' + IntToStr(UnixDate)); Memo1.Lines.Add('UnixTimeToDateTime = ' + DateToStr(UnixTimeToDateTime(UnixDate))); end; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- java日期相关类实例详解
- RMI初体验--第一次错处理java.rmi.UnmarshalException&
- java – JSP / GlassFish:如何正确设置UTF-8编码
- java – 如何找到具有给定lat long值和距离的lat的长点
- 是否有理由为其他类型的类型实现java.util.Comparable?
- java – 哪一个运行得更快,ArrayList或LinkedList?
- Java实现读取及生成Excel文件的方法
- java – 如何动态反编译内存中的类对象?
- java – 单元测试:断言不起作用?
- 使用外部Java插件的PhoneGap / Cordova中的音频/视频捕获