从1月到今天约会

时间:2010-09-15 08:53:37

标签: delphi

在此之前我使用此功能从6个月日期到今天日期..

dFromYear := AddMonth(dFromDate, -5);
dToYear   := EncodeDate(iYr, iMon, DaysInMonth(iYr, iMon));

但现在我想要从1月到今天约会...例如,如果今天月份是2010年9月,那么我想要从2010年1月到2010年9月获取日期..如果今天的日期是may2009所以我想从从2009年1月到2009年5月..我希望任何人都可以帮助我......谢谢

2 个答案:

答案 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。