如何时得到本季度的第一天和最后一天?(50分)

  • 主题发起人 主题发起人 czly
  • 开始时间 开始时间
C

czly

Unregistered / Unconfirmed
GUEST, unregistred user!
用DELPHI实现,急
 
首先取当前时间,然后判断处于哪个季度,最后得到你要的结果。
 
本季度第一天,不外乎于1,4,7,10四个月的第一天;最后一天不外乎于3,6,9,12四个月的最后一天
当前时间是哪一年哪个月很好得到,再利用DateUtils单元的几个函数也不难得到结果:
function StartOfAMonth(const AYear, AMonth: Word): TDateTime;
function EndOfAMonth(const AYear, AMonth: Word): TDateTime;
代码就不要别人代写了吧?
 
我想得到本月最后一天,不知怎么写
 
用EndOfTheMonth函数
 
每年每个季度的第一天和最后一天都是固定的
如第一季度肯定是 01-01 , 03-31 ,不管什么年份。 写个Case语句就行了
 
完整代码如下:(刚刚给你写的,呵呵:)可以给分了吗?)
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DateUtils;

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
{*****************************************************
以下过程返回aDate日期所在季度的第一天和最后一天(TDateTime格式)
******************************************************}
procedure GetFirstDayAndLastDayofCurrentSeason(aDate: TDateTime;
var FirstDay: TDateTime; var LastDay: TDateTime);
var
wdYY,wdMM,wdDD: Word;
begin
begin
DecodeDate(aDate,wdYY,wdMM,wdDD);
case wdMM of
1,2,3:
begin
FirstDay := EncodeDate(wdYY,1,1);
LastDay := EndOfTheMonth(EncodeDate(wdYY,3,1));
end;
4,5,6:
begin
FirstDay := EncodeDate(wdYY,4,1);
LastDay := EndOfTheMonth(EncodeDate(wdYY,6,1));
end;
7,8,9:
begin
FirstDay := EncodeDate(wdYY,7,1);
LastDay := EndOfTheMonth(EncodeDate(wdYY,9,1));
end;
10,11,12:
begin
FirstDay := EncodeDate(wdYY,10,1);
LastDay := EndOfTheMonth(EncodeDate(wdYY,12,1));
end;
end;
end;
end;
{****************************************************}
var
dtFirstDay,dtLastDay: TDateTime;
begin
GetFirstDayAndLastDayofCurrentSeason(Now,dtFirstDay,dtLastDay); //用你需要返回的时间代替Now
ShowMessage('本季第一天是:' + DateToStr(dtFirstDay) + ';本季最后一天是:' + DateToStr(dtLastDay));
end;

end.
 
怎么写了一个“急”,人家给了他答案他就人间蒸发了呢?不会是给急死了吧!?
 
Johnny_du,

看得出,你也很急。[:D]
 
后退
顶部