据我所知,没有办法做到这一点,但我会问,以防其他人知道如何做到这一点.如何在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 2010中的RTTI系统,有没有办法找出属性是否是TDateTime?每当我回调asVariant并且如果我检查属性类型时,它当前将它视为双精度.这是因为它只能看到基本类型吗?(TDateTime = double)
此代码应该在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)
任何提示?
var
tm : string;
dt : tdatetime;
tm := '2009-08-21T09:11:21Z';
dt := ?
Run Code Online (Sandbox Code Playgroud)
我知道我可以手动解析它,但我想知道是否有任何内置函数或Win32 API函数来执行此操作?
我需要知道类型变量 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) 我想使用Deplhi TWebBrowser在表单中显示“新闻”页面。新闻页面是一个简单的HTML页面,我们会不时将其上传到我们的网站,并且可能会通过各种工具输出。显示屏很好,但是我想在我的应用程序中知道自上次显示以来它是否已更改,因此理想情况下,我想获取其修改日期/时间或大小/校验和。精度并不重要,并且理想情况下不应依赖可能会失败的属性,因为使用了“简单”工具来编辑HTML文件,例如NotePad。在网上检查有几个文档修改过的java调用,但是我真的不知道从哪里开始。我浏览了Delphi的Winapi中的许多调用。WinInet单元,我看到我可以使用HTTP来获取文件以对其进行检查,但这似乎就像用大锤将核桃开裂一样。我也看不到任何文件日期时间功能,这使我觉得我缺少明显的东西。我正在使用Delphi XE5。我应该朝哪个方向看?感谢您的指导。
我有一个对象,具有一个值,但该值可以是一个integer,string,boolean或TDateTime.所以,它是一个Variant.
我用它VarType()来检查它的类型,但由于VarType()没有'varDate'或'varDateTime',我使用'varDouble',因为据我所知,a TDateTime是a double.
但这会失败.我也无法使用is检查,如果Variant是TDateTime.有没有办法,或者我应该制作某种类型的变量来确定该值的类型并使用它来检查它?
我正在尝试使用 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当然不具备.
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) 我有两个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()功能在这里没有帮助我。
tdatetime ×10
delphi ×9
rtti ×2
variant ×2
c++builder ×1
const ×1
date ×1
delphi-7 ×1
delphi-xe2 ×1
twebbrowser ×1
utc ×1
validation ×1