标签: tdatetime

在Delphi中将TDateTime声明为Const

据我所知,没有办法做到这一点,但我会问,以防其他人知道如何做到这一点.如何在Delphi中将日期声明为const?

我发现的唯一解决方案是使用数字等价物,这是一种难以维护,因为它不是人类可读的.

const
  Expire : TDateTime = 39895; // Is actually 3/23/2009
Run Code Online (Sandbox Code Playgroud)

我希望能做的是这样的:

const
  Expire : TDateTime = TDateTime ('3/23/2009');
Run Code Online (Sandbox Code Playgroud)

要么

const
  Expire : TDateTime = StrToDate('3/23/2009');
Run Code Online (Sandbox Code Playgroud)

所以让我知道这是一个功能请求,还是我错过了如何做到这一点(是的,我知道这似乎是一件奇怪的事情......)

delphi const date operator-overloading tdatetime

29
推荐指数
5
解决办法
9471
查看次数

如何通过RTTI区分TDateTime属性和Double属性?

使用Delphi 2010中的RTTI系统,有没有办法找出属性是否是TDateTime?每当我回调asVariant并且如果我检查属性类型时,它当前将它视为双精度.这是因为它只能看到基本类型吗?(TDateTime = double)

delphi rtti tdatetime

18
推荐指数
1
解决办法
2174
查看次数

使用StrToDateTime和TFormatSettings进行转换不起作用

此代码应该在Delphi XE2中工作,但它在StrtoDateTime转换中给出"不是有效的日期和时间"错误:

procedure TForm2.Button1Click(Sender: TObject);
var
  s: string;
  d: TDateTime;
  FmtStngs: TFormatSettings;
begin
    GetLocaleFormatSettings(GetThreadLocale, FmtStngs);
    FmtStngs.DateSeparator := #32;
    FmtStngs.ShortDateFormat := 'dd mmm yyyy';
    FmtStngs.TimeSeparator := ':';
    FmtStngs.LongTimeFormat := 'hh:nn';

    s := FormatDateTime('', Now, FmtStngs);
    d := StrToDateTime(s, FmtStngs);
end;
Run Code Online (Sandbox Code Playgroud)

任何提示?

delphi formatdatetime tdatetime delphi-xe2

16
推荐指数
2
解决办法
3万
查看次数

在Delphi中将UTC字符串转换为TDatetime

var
  tm : string;
  dt : tdatetime;

tm := '2009-08-21T09:11:21Z';
dt := ?
Run Code Online (Sandbox Code Playgroud)

我知道我可以手动解析它,但我想知道是否有任何内置函数或Win32 API函数来执行此操作?

delphi utc tdatetime

6
推荐指数
1
解决办法
1万
查看次数

Delphi中如何知道类型变量是TDateTime、TDate和TTime

我需要知道类型变量 TDateTime、TDate 和 TTime。

任何人都知道如何做到这一点?

我使用了下面的代码,结果是“不是 TDateTime”、“不是 TDate”、“不是 Ttime”


program Project1;

{$APPTYPE CONSOLE}

{$R *.res}

uses
  System.Rtti,
  System.SysUtils;

var
  DateTime, Date,Time: TValue;

begin

  DateTime:= StrToDateTime( '01/01/2013 01:05:09' );
  if ( DateTime.TypeInfo = System.TypeInfo(TDateTime) ) then
    Writeln( 'Is TDateTime' )
  else
    Writeln( 'Is NOT TDateTime' );

  Date:=  StrToDate( '01/01/2015' );
  if ( Date.TypeInfo = System.TypeInfo(TDate) ) then
    Writeln( 'Is TDate' )
  else
    Writeln( 'Is NOT TDate' );

 Time:=  StrToTime( '01:01:02' );
  if ( Date.TypeInfo = System.TypeInfo(TTime) ) then
    Writeln( 'Is TTime' …
Run Code Online (Sandbox Code Playgroud)

delphi rtti tdatetime

5
推荐指数
2
解决办法
4754
查看次数

自上次显示以来,检测Delphi TWebBrowser网页已更改的最佳方法是什么?

我想使用Deplhi TWebBrowser在表单中显示“新闻”页面。新闻页面是一个简单的HTML页面,我们会不时将其上传到我们的网站,并且可能会通过各种工具输出。显示屏很好,但是我想在我的应用程序中知道自上次显示以来它是否已更改,因此理想情况下,我想获取其修改日期/时间或大小/校验和。精度并不重要,并且理想情况下不应依赖可能会失败的属性,因为使用了“简单”工具来编辑HTML文件,例如NotePad。在网上检查有几个文档修改过的java调用,但是我真的不知道从哪里开始。我浏览了Delphi的Winapi中的许多调用。WinInet单元,我看到我可以使用HTTP来获取文件以对其进行检查,但这似乎就像用大锤将核桃开裂一样。我也看不到任何文件日期时间功能,这使我觉得我缺少明显的东西。我正在使用Delphi XE5。我应该朝哪个方向看?感谢您的指导。

delphi tdatetime twebbrowser

5
推荐指数
1
解决办法
753
查看次数

如何检查Variant是否为TDateTime?

我有一个对象,具有一个值,但该值可以是一个integer,string,booleanTDateTime.所以,它是一个Variant.

我用它VarType()来检查它的类型,但由于VarType()没有'varDate'或'varDateTime',我使用'varDouble',因为据我所知,a TDateTime是a double.

但这会失败.我也无法使用is检查,如果VariantTDateTime.有没有办法,或者我应该制作某种类型的变量来确定该值的类型并使用它来检查它?

delphi variant tdatetime

4
推荐指数
1
解决办法
2860
查看次数

使用 TryStrToDate 对日期进行特定验证

我正在尝试使用 TryStrToDate 验证用户输入的日期,以确保它们可以正确显示在我正在处理的应用程序的屏幕上,但不知道它究竟是如何工作的。当输入的有效日期不完全是 10 个字符时,我希望能够返回 False。

例如,09/02/2012 将返回 True,但 09/2/2012 或 9/02/2012 将返回 False。

我想保持这个简单,所以我只对使用 TryStrToDate 感兴趣,但是如果有另一个内置函数可以做到这一点,那也一样好。用户输入的数据在输入时经过验证,只允许 10 个字符的日期。

因此,我目前正在使用类似的东西:

var
  tempStr: string;
  tempDate: TDateTime;
  fs: TFormatSettings;
  error: Boolean;
  count: Integer;
begin
  tempStr := '09/2/2012'; //example of a date that should be rejected.
  GetLocaleFormatSettings(2048, fs);
  error := not TryStrToDate(tempStr, tempDate, formatSettings);
  if not error then
  begin
    error := True;
    if Length(tempStr) = 10 then
    begin
      count := Length(tempStr) - Length(StringReplace(tempStr, '/', '',   [frReplaceAll]));
      error := not (count = 2);
    end …
Run Code Online (Sandbox Code Playgroud)

delphi validation delphi-7 tdatetime

3
推荐指数
1
解决办法
7519
查看次数

为什么TDateTime计算涉及变体?

下面的简单示例代码,包含生成的汇编程序.我很惊讶生成的代码涉及变体.Delphi当然不具备.

TDateTime t1;
TDateTime t2;
...
int x =  2 * (t2 - t1);
Run Code Online (Sandbox Code Playgroud)

生成的代码.

Unit23.cpp.18: int x =  2 * (t2 - t1);
00401814 66C745C82400     mov word ptr [ebp-$38],$0024
0040181A 8D45DC           lea eax,[ebp-$24]
0040181D E852180000       call $00403074
00401822 50               push eax
00401823 FF45D4           inc dword ptr [ebp-$2c]
00401826 8D55A8           lea edx,[ebp-$58]
00401829 8D45A0           lea eax,[ebp-$60]
0040182C E8FB000000       call System::TDateTime::operator -(const System::TDateTime &)
00401831 DD5D94           fstp qword ptr [ebp-$6c]
00401834 8D5594           lea edx,[ebp-$6c]
00401837 8D45EC           lea eax,[ebp-$14]
0040183A E8F1180000       call …
Run Code Online (Sandbox Code Playgroud)

c++builder variant tdatetime

3
推荐指数
1
解决办法
78
查看次数

在Delphi中减去两个TDATETIME变量并以分钟为单位返回结果

我有两个TDateTime变量,如下所示:

s := StrToDateTime('03/03/2017 10:10:12');
e := StrToDateTime('04/04/2017 10:10:12');
Run Code Online (Sandbox Code Playgroud)

我需要找出它们之间的区别,hh:mm:ss格式。

这些...Between()功能在这里没有帮助我。

delphi tdatetime

2
推荐指数
2
解决办法
4301
查看次数