有没有函数得到上一月和下一月的年份和月份?(50分)

  • 主题发起人 主题发起人 oldnew
  • 开始时间 开始时间
O

oldnew

Unregistered / Unconfirmed
GUEST, unregistred user!
比如现在的日期是2002-12-15

有没有函数可以得出: 2002-11-01 和 2003-01-01
即获取上一月和下一月的数据?

有没有这样的函数啊?
要求考虑跨年度问题,就象上面所举的例子
 
获取某一月的最后一天!
function Fun_DtGetLastDay(Dt: TDateTime): TDateTime;
var Ye, Mt, Dy: WORD;
begin
SysUtils.DecodeDate(Dt, Ye, Mt, Dy);
case Mt of
1, 3, 5, 7, 8, 10, 12: Dy := 31;
4, 6, 9, 11: Dy := 30;
2: if SysUtils.IsLeapYear(Ye) then Dy := 29 else Dy := 28;
end;
result := SysUtils.EncodeDate(Ye, Mt, Dy);
end;
也许对你有用。
 
function GetPreDate(FormatDate: string): string;//获得上一个月
var
year, mon: string;
IntMon: integer;
begin
if length(FormatDate) > 10 then
begin
Application.MessageBox('日期格式出错', '警告', MB_OK + MB_ICONEXCLAMATION);
Abort;
end;
IntMon := strtoint(copy(FormatDate, 6, 2));
year := copy(FormatDate, 1, 4);
case IntMon of
1:
begin
mon := '12';
year := inttostr(strtoint(year) - 1);
end;
2: mon := '01';
3: mon := '02';
4: mon := '03';
5: mon := '04';
6: mon := '05';
7: mon := '06';
8: mon := '07';
9: mon := '08';
10: mon := '09';
11: mon := '10';
12: mon := '11';
end;
result := year + '-' + mon + '-' + Copy(FormatDate, 9, 2);
end;

function GetNextDate(FormatDate: string): string;//获得下一个月
var
year, mon: string;
IntMon: integer;
begin
if length(FormatDate) > 10 then
begin
Application.MessageBox('日期格式出错', '警告', MB_OK + MB_ICONEXCLAMATION);
Abort;
end;
IntMon := strtoint(copy(FormatDate, 6, 2));
year := copy(FormatDate, 1, 4);
case IntMon of
1: mon := '02';
2: mon := '03';
3: mon := '04';
4: mon := '05';
5: mon := '06';
6: mon := '07';
7: mon := '08';
8: mon := '09';
9: mon := '10';
10: mon := '11';
11: mon := '12';
12:
begin
mon := '01';
year := inttostr(strtoint(year) + 1);
end;
end;
result := year + '-' + mon + '-' + Copy(FormatDate, 9, 2);
end;

 
后退
顶部