Delphi tdatetime到Java日期/日历
我有个问题要问你 我的Java应用程序正在与Delphi应用程序通信。 Delphi应用程序在其UI中显示一些日期值,这些值应通过文件传输到Java应用程序中 但是delphi应用程序输出的不是UTC或任何时间字符串,而是一些浮点数,我希望这些浮点数只是日期的内部tdatetime值 以下使用MM/dd/YYYY格式对此进行了说明:Delphi tdatetime到Java日期/日历,java,delphi,date,calendar,tdatetime,Java,Delphi,Date,Calendar,Tdatetime,我有个问题要问你 我的Java应用程序正在与Delphi应用程序通信。 Delphi应用程序在其UI中显示一些日期值,这些值应通过文件传输到Java应用程序中 但是delphi应用程序输出的不是UTC或任何时间字符串,而是一些浮点数,我希望这些浮点数只是日期的内部tdatetime值 以下使用MM/dd/YYYY格式对此进行了说明: 用户界面:2014年7月10日->出口:41919,00 用户界面:2017年5月31日->出口:42887,00 用户界面:2015年9月30日->出口:422
- 用户界面:2014年7月10日->出口:41919,00
- 用户界面:2017年5月31日->出口:42887,00
- 用户界面:2015年9月30日->出口:42277,00
- UI:08/31/2016->出口:42613,00
Calendar c = Calendar.getInstance();
c.set(1899, 11, 30, 0, 0);// init delphi version of start of time
c.add(Calendar.DATE, <FloatingPoint>); // add in the days
// minutes not required as all values end with .00
SimpleDateFormat sdf = new SimpleDateFormat();
System.out.println(sdf.format(c.getTime())); // voila
Calendar c=Calendar.getInstance();
c、 集合(1899,11,30,0,0);//init delphi版本的开始时间
c、 添加(Calendar.DATE,);//加上天数
//不需要分钟,因为所有值均以.00结尾
SimpleDataFormat sdf=新的SimpleDataFormat();
System.out.println(sdf.format(c.getTime());//瞧
然而,令我惊讶的是,这并不正确
- 导出:41919,00->Java:10/07/14 00:00(正确)
- 导出:42887,00->Java:06/01/17 00:00(失败,+1天)
- 导出:42277,00->Java:09/30/15 00:00(正确)
- 导出:42613,00->Java:08/31/16 00:00(正确)
- 用户界面:2017年5月31日->42887,00,有时为42886,00
program Project1;
{$APPTYPE CONSOLE}
uses
DateUtils;
var
t : TDateTime;
d : double;
begin
t := EncodeDateTime(2017,05,31,0,0,0,0);
d := t;
WriteLn(d);
ReadLn;
end.
这将输出值42886,而不是源数据建议的42887。我怀疑你的截图和文本文件并不完全准确
对于没有分数成分的日期时间值,您的方法是正确的