日期转换问题(50分)

  • 主题发起人 主题发起人 liyan1022
  • 开始时间 开始时间
L

liyan1022

Unregistered / Unconfirmed
GUEST, unregistred user!
有年月:200607,200503
需转换为2006-07-31,2005-03-31.
即该年月的最后一日.

谢了!
 
uses dateutils;

function LastDay(str: string): TDate;
var
y,m,d: word;
begin
y:=strtoint(copy(str, 1, 4));
m:=strtoint(copy(str, 5, 2));
d:=DaysInAMonth(y, m);
result:=EncodeDate(y,m,d);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
caption:=DateTostr(LastDay('200607'));
end;
 
copy('200607',0, 4)+ '-'+copy('200607',5,2)+'-'+'31'
 
to 鳄鱼先生:
平月呢?

也可以求下个月的第一天,再减一
 
to kaida

d:=DaysInAMonth(y, m);//这能得到该年月的最后一日吗?好像是当月中的吧?

我是初学,还望高手指点!
 
d:=DaysInAMonth(y, m);//得到该年月的天数,比如2月28或29天,该函数自己根据年和月来计算,并给出该月的天数,也就是该月最后一天的日期。
不知我说清楚了没有,呵呵
 
quotedstr(formatdatetime('yyyy-mm-dd',encodedate(strtoint(copy(edt1.Text,1,4)),strtoint(copy(edt1.Text,5,2)),DaysInAMonth(strtoint(copy(edt1.text,1,4)),strtoint(copy(edt1.Text,5,2))))))

帮我看看这样写能行不?
 
都写这么麻烦干什么?
用下个月的第一天减一天不就行了,即;
有年月:200607,200503
Adate:=EncodeDate(2006,08,01);
Adate-1即是2006-07-31
多简单呀!让系统去判断上个月的最后一天去;
 
多人接受答案了。
 
后退
顶部