我在程序里需要将系统的当前时间写入一个ini文件中,用的是DateTimeToStr(Now),但是却始终打印出1899-12-30的日期,如果重新单独建立一个新的工程
procedure TForm1.Button1Click(Sender: TObject);
begin
  Label1.Caption := '现在是:' + DateTimeToStr(Now);
end;这样写,程序却能正确的读出系统时间,怎么回事啊,各位大侠指教下 啊

解决方案 »

  1.   

    本帖最后由 bdmh 于 2009-11-25 13:57:19 编辑
      

  2.   


    我不是读取ini而是向ini文件中写入当前的日期和时间哪,其他的键值都正确的写进去了啊
      

  3.   

    不明白,换成formatdatetime试试吧
      

  4.   

    ini不支持直接写入日期信息吧?需要转为字符串再写入ini吧
      

  5.   

                configIni.WriteString('归档文件管理','MainTable','GDMT');
                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','');
      

  6.   

    http://blog.csdn.net/Chen_ZhongHua/archive/2005/04/22/358884.aspx
    这个问题?
      

  7.   


    有时操作系统的日期格式设置不同,你这种方法不通用
    configIni.WriteString('归档文件管理','Time',FormatdateTime('yyyy-MM-dd',Now());
      

  8.   

    检查下你的电脑时间是多少?在前面加一句:
    ShowMessage(FormatdateTime('yyyy-MM-dd',Now());  是多少?configIni.WriteString('归档文件管理','Time',FormatdateTime('yyyy-MM-dd',Now()); 
    你是写进去后手工打开INI文件看到: 1899-12-30 还是再用程序读INI读出来是这个值?
      

  9.   


    电脑的时间是正常的,我在写进入ini文件后手动打开看到的1899-12-30,我之前也操作了ShowMessage(FormatdateTime('yyyy-MM-dd',Now());  打印的都是1899-12-30,上面也提到了,我单独新建一个工程就写一句话
    procedure TForm1.Button1Click(Sender: TObject); 
    begin 
      Label1.Caption := '现在是:' + DateTimeToStr(Now); 
    end;
    这种情况下读取的时间是我所希望得到的系统当前的时间
      

  10.   


    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;
    这是我程序的部分代码,有没有什么别的操作能够影响到这个时间的获取呢??
      

  11.   

    感觉不是Ini文件操作的问题,试一下下面的代码
    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文件中内容
      

  12.   

    ...
    要不用GetsystemTime之类的转换一下看看?
      

  13.   

    建议将时间转换为Unix time格式,那样就只是一个32位的整型数值,也就不会有格式的问题了。
      

  14.   


    直接寫一個DOUBLE值吧。 
      

  15.   

      DateSeparator := '-';
      showmessage(formatdatetime('yyyy-mm-dd hh:mm:ss',now()));
    这样执行,显示的日期是正确的吗
      

  16.   

    这样理解下:
    procedure TForm1.Button1Click(Sender: TObject);
    var
      d : DOUBLE;
    begin
      d := now;
      ShowMessage(FormatDateTime('yyyy-MM-dd hh:MM:ss',TDatetime(d)));
    end;
      

  17.   

    我直接用这句去configIni.WriteString('归档文件管理','Time',FormatdateTime('yyyy-MM-dd hh:mm:nn',Now));调试,.ini文件中time显示的时间是当前系统时间。环境是:windows2000 + delphi 6.0
      

  18.   

    uses
      DateUtils;var
      D: LongWord;Ini.WriteInteger('测试','时间',DateTimeToUnix(Now));
    D := Ini.ReadInteger('测试','时间',0);
    ShowMessage(FormatDateTime('yyyy-mm-dd hh:nn:ss', UnixToDateTime(D)));
      

  19.   

    哥们,你的原因是不是你的代码中有一个now:tdatetime的变量?而且没有初始化?这样当然一直显示1899-12-30了~~~不要用特殊字做变量~~procedure TForm1.Button1Click(Sender: TObject);
    var
      now:tdatetime;//去掉这行显示正常
    begin
      ShowMessage(datetimetostr(Now));
    end;一直显示1899-12-30
      

  20.   


    其实这一点倒是应当由IDE在编译时做一些检查的,当然主观上养成良好的编码习惯是根本
    小问题,把这么多专家都搞迷糊了,僵哥都忍不住冒出来了