Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi 要与JuliandateTime()一起使用的当前时间(即Now())的值?_Delphi_Delphi 2010_Vcl - Fatal编程技术网

Delphi 要与JuliandateTime()一起使用的当前时间(即Now())的值?

Delphi 要与JuliandateTime()一起使用的当前时间(即Now())的值?,delphi,delphi-2010,vcl,Delphi,Delphi 2010,Vcl,我正在尝试将Now()返回的值转换为double,然后在另一个函数中使用它,即 procedure TForm1.FormCreate(Sender: TObject); begin MyFunction_1(Now); end; procedure MyFunction_1(TheTime : Double); begin MyFunction_2(TheTime); end; procedure MyFunction_1(ModificationDate : Double

我正在尝试将Now()返回的值转换为double,然后在另一个函数中使用它,即

procedure TForm1.FormCreate(Sender: TObject);
begin
    MyFunction_1(Now);
end;

procedure MyFunction_1(TheTime : Double);
begin
    MyFunction_2(TheTime);
end;

procedure MyFunction_1(ModificationDate : Double);
begin
    if JulianDateToDateTime(ModificationDate) < 12345 then
       ...
end;
我很确定这是非常基本的东西,我只是不知道它是什么


需要帮忙吗

您正在反向操作。:-)

JulianDateToDateTime
将Julian日期作为参数并返回TDateTime。它不把TDateTime作为一个参数;这就是你得到错误结果的原因。我想你是想走另一条路(
DateTimeToJulianDate

从Delphi文档中:

调用JulianDateToDateTime将Julian日期转换为相应的TDateTime值

调用DateTimeToJulianDate将TDateTime值转换为相应的Julian日期

下面是一个显示差异的快速示例:

uses DateUtils;

procedure TForm2.FormShow(Sender: TObject);
var
  TodaysDate: TDateTime;
  JDate: TDateTime;
begin
  TodaysDate := Date;
  JDate := DateTimeToJulianDate(TodaysDate);
  ShowMessage('Today: ' + FloatToStr(TodaysDate) + #13 +
              'JDate: ' + FloatToStr(JDate) );
end;
以下是输出:

请注意,再添加一个
TDateTime
类型的变量并尝试使用
JulianDateToDateTime
会引发范围异常:

BadDate: TDateTime;
...

BadDate := JulianDateToDateTime(TodaysDate);   // raises exception
返回一个
TDateTime
时间戳,该时间戳是在单位
系统中定义的
Double

TDateTime = type Double;
如果要将其转换为儒略日期,则需要将其输入到:


使用
JulianDateToDateTime
您应该提供一个Julian日期并将其转换为
DateTime
值。我想您应该使用
DateTimeToJulianDate
TDateTime = type Double;
DateTimeToJulianDate(Now)