我在程序里需要将系统的当前时间写入一个ini文件中,用的是DateTimeToStr(Now),但是却始终打印出1899-12-30的日期,如果重新单独建立一个新的工程
procedure TForm1.Button1Click(Sender: TObject);
begin
Label1.Caption := '现在是:' + DateTimeToStr(Now);
end;这样写,程序却能正确的读出系统时间,怎么回事啊,各位大侠指教下 啊
procedure TForm1.Button1Click(Sender: TObject);
begin
Label1.Caption := '现在是:' + DateTimeToStr(Now);
end;这样写,程序却能正确的读出系统时间,怎么回事啊,各位大侠指教下 啊
我不是读取ini而是向ini文件中写入当前的日期和时间哪,其他的键值都正确的写进去了啊
configIni.WriteString('归档文件管理','User','sysdba');
configIni.WriteString('归档文件管理','Time',DateTimeToStr(Now));
configIni.WriteString('归档文件管理','Des','');
configIni.WriteString('归档文件管理','rowCount',inttostr(DataModule1.QueryViewInfo.RecordCount));
configIni.WriteString('归档文件管理','Type','darms');
configIni.WriteString('归档文件管理','SubTable','');
这个问题?
有时操作系统的日期格式设置不同,你这种方法不通用
configIni.WriteString('归档文件管理','Time',FormatdateTime('yyyy-MM-dd',Now());
ShowMessage(FormatdateTime('yyyy-MM-dd',Now()); 是多少?configIni.WriteString('归档文件管理','Time',FormatdateTime('yyyy-MM-dd',Now());
你是写进去后手工打开INI文件看到: 1899-12-30 还是再用程序读INI读出来是这个值?
电脑的时间是正常的,我在写进入ini文件后手动打开看到的1899-12-30,我之前也操作了ShowMessage(FormatdateTime('yyyy-MM-dd',Now()); 打印的都是1899-12-30,上面也提到了,我单独新建一个工程就写一句话
procedure TForm1.Button1Click(Sender: TObject);
begin
Label1.Caption := '现在是:' + DateTimeToStr(Now);
end;
这种情况下读取的时间是我所希望得到的系统当前的时间
if SelectDirectory('请选择目录','',strDir) then
begin
// 转出归档文件
if RbPigeonHole.Checked or RBOldPigeonHole.Checked then
begin
Screen.Cursor := crSQLWait;
CreateDirectory(PChar(strDir + '\归档文件管理\'),nil);
strDirTxt := strDir + '\归档文件管理\';
CreateDirectory(PChar(strDirTxt + '1\'),nil);
strDirTxt := strDirTxt + '1\';
with DataModule1.QueryViewInfo do
begin
DataModule1.QueryViewInfo.first;
while not eof do
begin
if trim(FieldByName('IsAccessory').AsString)='有' then
begin
isAcce := true;
break;
end;
DataModule1.QueryViewInfo.Next;
end;
end;
if isAcce then
begin
CreateDirectory(PChar(strDirTxt + 'Media\'),nil);
strDirMedia := strDirTxt + 'Media\';
end;
try
strDirIni := strDir + '\';
configIni := TIniFile.Create(strDirIni + 'handover.ini');
Txt := TStringList.Create;
with DataModule1.QueryViewInfo do
begin
configIni.WriteString('归档文件管理','MainTable','GDMT');
configIni.WriteString('归档文件管理','User','sysdba');
configIni.WriteString('归档文件管理','Time',FormatdateTime('yyyy-MM-dd hh:mm:nn',Now));
configIni.WriteString('归档文件管理','Des','');
configIni.WriteString('归档文件管理','rowCount',inttostr(DataModule1.QueryViewInfo.RecordCount));
configIni.WriteString('归档文件管理','Type','darms');
configIni.WriteString('归档文件管理','SubTable','');
DataModule1.QueryViewInfo.first;
if trim(FieldByName('FileFrSize').AsString)='' then
begin
Edit;
FieldByName('FileFrSize').AsString:=#0;
end;
j := 1;
DataModule1.QueryViewInfo.first;
while not Eof do
begin
OutStr := OutStr + FieldByName('FileCaption').AsString + Char(14)
+ FieldByName('FileFrSize').AsString + Char(14)
+ '/' + FieldByName('FilePeople').AsString + '/' + Char(14)
+ '//' + Char(14) + '//' + Char(14) + '//' + Char(14)
+ FieldByName('FileDate1').AsString + Char(14)
+ FieldByName('SecName').AsString + Char(14)
+ FieldByName('FilePages').AsString + Char(14)
+ Char(14) + CFileLog + Char(14)
+ CFolderID + Char(14)
+ FieldByName('LimitName').AsString + Char(14)
+ FieldByName('FileYear').AsString + Char(14)
+ FieldByName('FileProb').AsString + Char(14)
+ FieldByName('FileID').AsString + Char(14) + '0' + Char(14) + '0' + Char(14)
+ FieldByName('FileAdd').AsString + Char(14)
+ CFileShopID + Char(14) + Char(14) + Char(14) + Char(14) + Char(14)
+ FieldByName('FilePath').AsString + Char(14) + Char(14) + Char(14) + Char(14) + Char(14)
+ Char(14) + Char(14) + Char(14) + Char(14) + Char(14) + Char(14)
+FieldByName('CaseName').AsString;
For i:=1 to 40 do
begin
OutStr := OutStr + Char(14);
end;
if trim(FieldByName('IsAccessory').AsString)='有' then
begin
Txt.Add(OutStr + inttostr(j));
inc(j);
end
else
Txt.Add(OutStr);
OutStr := '';
next;
end;
first;
end;
Txt.SaveToFile(strDirTxt + 'GD.Txt');
// 导出全文
if strDirMedia <> '' then
ExportAccessoryTT(strDirMedia);
Screen.Cursor := crDefault;
application.MessageBox('档案转出完毕!', '提示');
finally
Txt.Free;
configIni.Free;
end;
end;
这是我程序的部分代码,有没有什么别的操作能够影响到这个时间的获取呢??
procedure TForm1.Button1Click(Sender: TObject);
var
configIni: TIniFile;
begin
configIni := TIniFile.Create('c:\handover.ini');
configIni.WriteString('归档文件管理','MainTable','GDMT');
configIni.WriteString('归档文件管理','User','sysdba');
configIni.WriteString('归档文件管理','Time',FormatdateTime('yyyy-MM-dd hh:mm:nn',Now));
configIni.WriteString('归档文件管理','Des','');
configIni.WriteString('归档文件管理','rowCount','100');
configIni.WriteString('归档文件管理','Type','darms');
configIni.WriteString('归档文件管理','SubTable','');
end;结果如下:
[归档文件管理]
MainTable=GDMT
User=sysdba
Time=2009-11-25 16:25:25
Des=
rowCount=100
Type=darms
SubTable=你可以查看一下你的INI文件中内容
要不用GetsystemTime之类的转换一下看看?
直接寫一個DOUBLE值吧。
showmessage(formatdatetime('yyyy-mm-dd hh:mm:ss',now()));
这样执行,显示的日期是正确的吗
procedure TForm1.Button1Click(Sender: TObject);
var
d : DOUBLE;
begin
d := now;
ShowMessage(FormatDateTime('yyyy-MM-dd hh:MM:ss',TDatetime(d)));
end;
DateUtils;var
D: LongWord;Ini.WriteInteger('测试','时间',DateTimeToUnix(Now));
D := Ini.ReadInteger('测试','时间',0);
ShowMessage(FormatDateTime('yyyy-mm-dd hh:nn:ss', UnixToDateTime(D)));
var
now:tdatetime;//去掉这行显示正常
begin
ShowMessage(datetimetostr(Now));
end;一直显示1899-12-30
其实这一点倒是应当由IDE在编译时做一些检查的,当然主观上养成良好的编码习惯是根本
小问题,把这么多专家都搞迷糊了,僵哥都忍不住冒出来了