在此之前我使用此功能从6个月日期到今天日期..
dFromYear := AddMonth(dFromDate, -5);
dToYear := EncodeDate(iYr, iMon, DaysInMonth(iYr, iMon));
但现在我想要从1月到今天约会...例如,如果今天月份是2010年9月,那么我想要从2010年1月到2010年9月获取日期..如果今天的日期是may2009所以我想从从2009年1月到2009年5月..我希望任何人都可以帮助我......谢谢
答案 0 :(得分:3)
我不太清楚你的意思,但如果你想计算从1月到现在的月数,DateUtils中有一个名为MonthsBetween的函数可以为你做。
像这样:
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils,DateUtils;
var
vMonths : integer;
vFromDate,
vToDate : TDateTime;
begin
vFromDate := EncodeDate(YearOf(Now),1,1);
vToDate := Now;
vMonths := DateUtils.MonthsBetween(vFromDate,vToDate);
writeln(vMonths);
end.
答案 1 :(得分:3)
MonthsBetween
函数假设一个月的长度为30.4375天,这意味着在很多情况下,人们可以在心理上计算预期答案,这可能会令人尴尬。如果您想要从当年1月1日开始经过的整个月数,那么在没有该功能的情况下您可以更准确:
function WholeMonthsElapsedThisYear: Integer;
begin
Result := MonthOf(Date) - 1;
end;
对于9月份的任何日期,该函数将返回8.对于1月份的任何日期,它将返回0,并且将在3月1日正确返回2。