起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 308|回复: 6

【搞定】关于类型转换的问题[请求]**

[复制链接]
发表于 2007-3-29 15:58:48 | 显示全部楼层 |阅读模式
date:TDate;
  month :TDatetime;
begin
    date:=business.Data.SysSrv.SysService.Time;
    month:=Business.System.DateUtils.MonthOf(date);  3
    s4 := sysutils.DateToStr(month);   1900-1-2
我的代码 month 的值取出了当前月
给S4赋值的时候 数值就变成 1900-1-2了 为什么啊
回复

使用道具 举报

发表于 2007-3-29 16:01:28 | 显示全部楼层
DateUtils.MonthOf返回的应该是整数吧!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-3-29 16:07:47 | 显示全部楼层
是整数 我要在程序里组合字符串 所以要将 month的类型转换为STRING
procedure TGZB4.Button4Click(Sender: TObject);
var
   s,s3,s4:string;
   s1,s2ouble;
  date:TDate;
  month :TDatetime;
begin
    date:=business.Data.SysSrv.SysService.Time;
    month:=Business.System.DateUtils.MonthOf(date);
    s4 :=  sysutils.DateToStr(month);
    datasetbroker1.DataSet.Open;
    datasetbroker1.DataSet.First;
    memo1.Text := '';
    while not datasetbroker1.DataSet.Eof do
    begin
      if(datasetbroker1.DataSet.FieldByName('yxzh').AsString <> '')       then
       begin
       s := datasetbroker1.DataSet.FieldByName('YXZH').AsString;
       s1 :=datasetbroker1.DataSet.FieldByName('SL').AsFloat;
       s3 := sysutils.FloatToStr(s1);
       memo1.Lines.Add(s+' 00'+s3+'00');
       end;
    datasetbroker1.DataSet.Next;

    end;
    memo1.Lines.SaveToFile('C:\'''+s4+'''月份员工银行帐号及工资.txt');
end;
回复 支持 反对

使用道具 举报

发表于 2007-3-29 16:12:10 | 显示全部楼层
s4 :=  sysutils.IntToStr(month);
这里month应该是整数了,不是日期时间
2007年3月29日 是一个日期
但是 3 是一个整数
所以这里应该定义一个整数类型,用IntToStr
回复 支持 反对

使用道具 举报

发表于 2007-3-29 16:13:18 | 显示全部楼层
日期类型实际上就是一个浮点数
TDateTime is a used by the date and time routines to hold date and time values.

Unit

System

type TDateTime = type Double;

Description

Most VCL objects represent date and time values using the TDateTime type. The integral part of a TDateTime value is the number of days that have passed since 12/30/1899. The fractional part of a TDateTime value is fraction of a 24 hour day that has elapsed.

Following are some examples of TDateTime values and their corresponding dates and times:

0        12/30/1899 12:00 am
2.75        1/1/1900 6:00 pm
-1.25        12/29/1899 6:00 am
35065        1/1/1996 12:00 am
To find the fractional number of days between two dates, simply subtract the two values, unless one of the TDateTime values is negative. Similarly, to increment a date and time value by a certain fractional number of days, add the fractional number to the date and time value if the TDateTime value is positive.
When working with negative TDateTime values, computations must handle time portion separately. The fractional part reflects the fraction of a 24-hour day without regard to the sign of the TDateTime value. For example, 6:00 am on 12/29/1899 is ?.25, not ? + 0.25, which would be ?.75. There are no TDateTime values between ? and 0.

Note:        Delphi 1.0 calculated the date from year 1 instead of from 1899. To convert a Delphi 1.0 date to a TDateTime value in later versions of Delphi or in Kylix, subtract 693594.0 from the Delphi 1.0 date. The date format changed to be more compatible with OLE 2.0 Automation.
回复 支持 反对

使用道具 举报

发表于 2007-3-29 16:14:27 | 显示全部楼层
所以
0   12/30/1899 12:00 am
3   1900-1-2
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-3-29 16:19:46 | 显示全部楼层
搞定  谢谢
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2024-12-28 18:06 , Processed in 0.048334 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表