- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
考虑以下代码:
procedure Test;
function d1: Variant;
var
DDt: TDateTime;
begin
DDt := EncodeDate(100,1,1);
Result := DDt;
end;
function d2: Variant;
var
DDt: TDateTime;
begin
DDt := EncodeDate(99,12,31);
Result := DDt;
end;
procedure Writedate(V: Variant);
begin
Writeln(string(V));
end;
var
V: Variant;
begin
V := d1;
Writedate(V);
V := d2;
Writedate(V);
end;
第一次调用 Writedate
将成功,输出将为“01-01-0100”。然而,第二次调用将因“无效参数”失败而失败。检查代码,您可以看到 99-12-31 日期的 Variant
存在 EVariantInvalidArgError
错误。
但是,如果我在任一 TDateTime
上调用 FormatDateTime('c', TDateTime(V))
,它们都会成功。事实上,在任何时候,当 Variant
包含日期早于 100 CE 的 TDateTime
时,IDE 在检查其日期时都会显示 EVariantInvalidArgError
值。
奇怪的是,Variant
无法处理 100 CE 之前的日期,而 TDateTime
可以。这是 Delphi 中的错误吗?我发现公元 99 年到 100 年之间正确有点可疑。
最佳答案
Variant
可以包含任何日期值,如您的代码所示(赋值 V := d2;
不会产生错误)。
在转换为字符串(编译器委托(delegate)给 Windows 平台上的操作系统)的过程中会引发错误。这会失败,因为 OLE Automation指定 0100 年 1 月 1 日午夜作为最小有效 OLE 自动化日期值。
关于delphi - 为什么 Variant 不能包含 100 CE 之前的 TDateTime?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30392214/
我的问题简而言之:TDateTime A (03.09.2014 13:40) - TDateTime B (03.09.2014 13:40) = -1 我有两个要比较的 TDateTime 值,首
我想将秒添加到 TDateTime 变量中,以便结果是分钟的顶部。例如,如果是 08:30:25,我想更改 TDateTime 变量来存储 08:31:00。 我看到 TDateTime 有一个 De
我正在执行一个长循环,下载数千个文件。我想显示估计的剩余时间,因为这可能需要几个小时。然而,根据我所写的内容,我得到了平均毫秒。如何将此平均下载时间从毫秒转换为 TDateTime? 看看我在哪里设置
Delphi 5 中是否有任何方法可以将字符串转换为 TDateTime,您可以在其中指定要使用的实际格式? 我正在开发一个作业处理器,它接受来自各个工作站的任务。这些任务有一系列参数,其中一些是日期
我正在使用 C++ Builder 并收到以下错误: [ILINK32 Error] Error: Unresolved external '__fastcall System::Internal::
我正在为 FMX TGrid 编写列和单元格类,它将在每个单元格中包含 TCalendarEdit 和 TTimeEdit 实例。除了正确处理这些子控件中所做的更改外,一切正常。 type TFM
似乎无法将 NULL 分配给 TDateTime 变量(“未分配值”)。 我想象的唯一方法是使用这样的东西: function isNull(aDate : TDateTime) : boolean;
正在寻找返回两个 TDateTime 值之间的秒差的代码示例。具体来说,我试图比较两个 TDateTime 值,如果大于第二个阈值,它将运行特定方法。 谢谢! 最佳答案 尝试SecondsBetwee
有没有办法检查Delphi是否TDateTime变量具有有效内容而不会捕获转换异常? 我编写了一个应用程序,必须解析数百个以原始 Delphi 记录形式编写的大文件,其中包含 TDateTime fi
我需要通过 AJAX 向 delphi 服务器发送一个日期,该服务器接受浮点格式的日期并设置 TDateTime 属性。 例如。 var date: TDateTime; begin da
我正在使用 C++ Builder 并有以下问题: 我想检测一个日期/时间是否晚于另一个日期/时间,以及晚了多少。 这是我当前的代码: TDateTime testFirstDate("11/09/2
我在将日期设置为 TDateTime 变量时遇到问题。 我已经试过了,没有运气: TDateTime Mine; Mine = ("12/05/1990"); 我该怎么做? 这段代码有什么问题: TD
我正在使用 C++ 开发预约系统。 能否请我帮忙将字符串转换为 TDateTime 变量。 这是一个我希望得到帮助的示例; TDateTime appDateTime(2012, 9, 15, 14,
我正在使用 C++ Builder,我需要一些帮助来查看两次是否相同。 这是我的代码: TDateTime appDateFromVector = TimeOf(appointmentsForFind
我正在使用 C++ 并使用 TDateTime 数据类型。 如何获取当前系统日期/时间并将其放入 TDateTime 变量? 最佳答案 正如 Jesse 提到的,您可以使用 Now() 函数(或静态
我正在使用 C++ Builder 并使用 TDateTime 数据类型创建 GUI 应用程序。 当我在 TDateTime 对象上使用 MonthOf() 方法时,我得到的值比 TDateTime
我正在尝试为 Tdatetime 编写一个函数(但是当我打开我的程序时,他必须显示现在的数据) 下面我有一个函数用于 TDatetime 但我有一个错误: ((((''DecodeDateTime(d
我有一个对象,它有一个值,但该值可以是 integer , string , boolean或TDateTime 。所以,它是 Variant . 我使用VarType()检查其类型,但自 VarTy
无论用户的本地时区设置为何,使用 Delphi 2007,我都需要确定东部时区的时间 (TDateTime)。 我怎样才能做到这一点?当然,需要了解夏令时。 最佳答案 如果我理解正确,您需要相当于当前
我需要将 TDateTime 转换为具有微秒精度的String。如果是毫秒精度,可以使用格式: DateTimeToString(Result, 'd.m.yyyy hh:nn:ss.zzz', da
我是一名优秀的程序员,十分优秀!