Q&A
HOME
Tips & Tech
Q&A
Discuss
Download
자유게시판
홍보 / 광고
구인 / 구직
LOGIN
회원가입
에디트박스에서 받은 날짜 경과일 계산하려면...
"19991231"과 "20000101"이라는 두 값으로 경과일을 계산하여 1일이라고
Edit Box에 나타내려고 합니다...
어떻게 해야하는지 궁금하군요...
고수님들의 여러 답변 부탁드립니다..
2
COMMENTS
Mr.Q
•
2000.11.14 05:27
이원택 wrote:
> "19991231"과 "20000101"이라는 두 값으로 경과일을 계산하여 1일이라고
> Edit Box에 나타내려고 합니다...
> 어떻게 해야하는지 궁금하군요...
> 고수님들의 여러 답변 부탁드립니다..
방법은 여러가지인데...
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Mask;
type
TForm1 = class(TForm)
Button1: TButton;
MaskEdit1: TMaskEdit;
MaskEdit2: TMaskEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
Function GetGapDays(bbDate,aaDate:TDateTime):integer;
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
Function TForm1.GetGapDays(bbDate,aaDate:TDateTime):integer;
begin
result:=DateTimeToTimeStamp(bbDate).Date-DateTimeToTimeStamp(aaDate).Date;
end;
{Procedure TForm1.Button1Click(Sender:TObject);
var
aYear, aMonth, aDay, aDate:string;
bYear, bMonth, bDay, bDate:string;
sbDate, saDate:TDateTime;
iGapDays:integer;
begin
aDate:=maskedit1.text; //20000301(aDate)
bDate:=maskedit2.text; //20000411(bDate)
//----10001010형식을--"1000-10-10"형식으로변환----------------
aYear:=copy(aDate,1,4); //2000
aMonth:=copy(aDate,5,2); //03
aDay:=copy(aDate,7,2); //01
aDate:=aYear+'-'+aMonth+'-'+aDay; //2000-03-01
bYear:=copy(bDate,1,4); //2000
bMonth:=copy(bDate,5,2); //04
bDay:=copy(bDate,7,2); //01
bDate:=bYear+'-'+bMonth+'-'+bDay; //2000-04-11
//-------------예외처리(시작)----------------------------------
try
saDate:=StrToDateTime(aDate);
except
//begin
Application.MessageBox('유효하지 못한 날짜를 입력하셨습니다','첫번째날짜입력
란', mb_ok);
exit;
//end;
try
sbDate:=StrToDateTime(bDate);
except
//begin
Application.MessageBox('유효하지 못한 날짜를 입력하셨습니다' ,'두번째날짜입력
란', mb_ok);
exit;
//end;
//-------------예외처리(끝)-----------------------------------
iGapDays:=GetGapDays(sbDate,saDate);
ShowMessage(IntToStr(iGapDays));
end; }
procedure TForm1.Button1Click(Sender: TObject);
var
aYear, aMonth, aDay, aDate:string;
bYear, bMonth, bDay, bDate:string;
sbDate, saDate:TDateTime;
iGapDays:integer;
begin
aDate:=maskedit1.text; //20000301(aDate)
bDate:=maskedit2.text; //20000411(bDate)
//----10001010형식을--"1000-10-10"형식으로변환----------------
aYear:=copy(aDate,1,4); //2000
aMonth:=copy(aDate,5,2); //03
aDay:=copy(aDate,7,2); //01
aDate:=aYear+'-'+aMonth+'-'+aDay; //2000-03-01
bYear:=copy(bDate,1,4); //2000
bMonth:=copy(bDate,5,2); //04
bDay:=copy(bDate,7,2); //01
bDate:=bYear+'-'+bMonth+'-'+bDay; //2000-04-11
//-------------예외처리(시작)----------------------------------
try
saDate:=StrToDateTime(aDate);
except on EConvertError do
begin
Application.MessageBox('유효하지 못한 날짜를 입력하셨습니다','첫번째날짜입
력란', mb_ok);
exit;
end;
end;
try
sbDate:=StrToDateTime(bDate);
except on EConvertError do
begin
Application.MessageBox('유효하지 못한 날짜를 입력하셨습니다' ,'두번째날짜입
력란', mb_ok);
exit;
end;
end;
//-------------예외처리(끝)-----------------------------------
iGapDays:=GetGapDays(sbDate,saDate);
ShowMessage(IntToStr(iGapDays));
end;
end.
0
0
삭제
수정
댓글
nilriri
•
2000.11.14 04:29
질문을 하시기 전에 먼저 자료실과 팁란을 검색하시면 보다 다양한 답변을
빨리 얻을 수 있을것 같군요...
그럼...
샬롬!
자료실에 있는 '유틸마인드'인가하는 홈에서 만든 날짜계산 프로그램이...
제가 하고자 하는 작업과는 좀 거리가 멀어서....
처음에는 그걸 어떻게 뜯어 고쳐보려고 했는데...
기간을 주면 그 기간이 시작일로부터 몇년 몇개월 몇일인지를 계산하는...
음 그러니까 인사관리프로그램등에서... 근무년수 계산을 한다든지...
그래서 혹 저와 같은 필요를 느끼시는 분들께 도움이 될까해서...
오랜만에 델파이 프로그램 수정하느라 고생입니다. 근 1년가 파빌만 했더니...
그럼...
헉 여기는 파일첨부가 안되네요~
아래는 소스코드이구요 자료실에 파일 올리죠...
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Mask;
type
TForm1 = class(TForm)
Button1: TButton;
MaskEdit1: TMaskEdit;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
MaskEdit2: TMaskEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
YY, MM, DD : Word;
implementation
{$R *.DFM}
Function Year(iDate:TDateTime):Word;
begin
DecodeDate(iDate, Result, MM, DD)
end;
Function Month(iDate:TDateTime):Word;
begin
DecodeDate(iDate, YY, Result, DD)
end;
Function Day(iDate:TDateTime):Word;
begin
DecodeDate(iDate, YY, MM, Result)
end;
procedure TForm1.Button1Click(Sender: TObject);
var
CHKDATE, FDATE, TDATE : TDateTime;
YY, MM, DD : LongInt;
CHK : INTEGER;
begin
FDATE := strtodate(formatmasktext('####-##-##;0;', maskedit1.Text));
TDATE := strtodate(formatmasktext('####-##-##;0;', maskedit2.Text));
CHK := 0;
IF (MONTH(TDATE) < MONTH(FDATE)) OR ((MONTH(TDATE) = MONTH(FDATE)) AND (DAY(TDATE) < DAY(FDATE))) THEN
BEGIN
CHK := 1;
END;
YY := YEAR(TDATE)-YEAR(FDATE) - CHK;
EDIT1.TEXT := INTTOSTR(YY);
CHK := 0;
IF (MONTH(TDATE) <= MONTH(FDATE)) AND (DAY(TDATE) < DAY(FDATE)) THEN CHK := 11;
IF (MONTH(TDATE) < MONTH(FDATE)) AND (DAY(TDATE) >= DAY(FDATE)) THEN CHK := 12;
IF (MONTH(TDATE) > MONTH(FDATE)) AND (DAY(TDATE) < DAY(FDATE)) THEN CHK := -1;
MM := MONTH(TDATE)-MONTH(FDATE) + CHK;
EDIT2.Text := INTTOSTR(MM);
CHK := 0;
IF DAY(TDATE) < DAY(FDATE) THEN CHK := 1;
CHKDATE := ENCODEDATE(YEAR(TDATE), MONTH(TDATE) - CHK, DAY(FDATE) );
DD := STRTOINT(FLOATTOSTR(TDATE - CHKDATE)) + 1;
EDIT3.TEXT := INTTOSTR(DD);
end;
end.
이원택 wrote:
> "19991231"과 "20000101"이라는 두 값으로 경과일을 계산하여 1일이라고
> Edit Box에 나타내려고 합니다...
> 어떻게 해야하는지 궁금하군요...
> 고수님들의 여러 답변 부탁드립니다..
0
0
삭제
수정
댓글
(NOTICE) You must be
logged in
to comment on this post.
이원택
•
2000.11.14 03:40
2
COMMENTS
/
0
LIKES
에디트박스에서 받은 날짜 경과일 계산하려면...
"19991231"과 "20000101"이라는 두 값으로 경과일을 계산하여 1일이라고 Edit Box에 나타내려고 합니다... 어떻게 해야하는지 궁금하군요... 고수님들의 여러 답변 부탁드립니다..
Mr.Q
•
2000.11.14 05:27
이원택 wrote: > "19991231"과 "20000101"이라는 두 값으로 경과일을 계산하여 1일이라고 > Edit Box에 ...
nilriri
•
2000.11.14 04:29
질문을 하시기 전에 먼저 자료실과 팁란을 검색하시면 보다 다양한 답변을 빨리 얻을 수 있을것 같군요......
volf
•
2000.11.14 03:36
2
COMMENTS
/
0
LIKES
서버소켓과 클라이언트 소켓을 같이 active하면??
김하늘
•
2000.11.14 06:56
글쎄유 잘은 모르겠지만... 소리바다는 별도로 클라이언트 모듈에 서버소켓이 같이 내장되있을것 같네요 ...
volf
•
2000.11.14 06:54
하나의 폼에 서버소켓과 클라이언트 소켓같이 활성화 해도 되네요.. 제가 실수한것은 디스커넥션이 되었...
ljb007
•
2000.11.14 03:30
1
COMMENTS
/
0
LIKES
[정말도와주세요]QuickRep에서 A4출력 - 꼭바주세요(고수님)
안정한
•
2000.11.14 21:26
ljb007 wrote: > QuickRep에서 세금계산서를 인쇄하려는데 A4한장에 위에는 공급자 아래에는 공급받는자 ...
ljb007
2000.11.14 03:27
0
COMMENTS
/
0
LIKES
[무지급함]Quickrep A4인쇄관련-고수님들 정말도와주세요
모휘숙
•
2000.11.14 03:13
2
COMMENTS
/
0
LIKES
sql초보의 설움
nilriri
•
2000.11.14 05:19
convert라는 함수가 있습니다. convert(필드명, 자료형(길이)) 자세히 기억이 나질 않네요... cast (필...
모영운
•
2000.11.14 03:45
뭘 어떻게 변환 할꺼죠? sql은 변환하는 재미가 솔솔 넘치죠 ^_^ 모휘숙 wrote: > 저기여 지송한데여....
한두경
•
2000.11.14 02:46
1
COMMENTS
/
0
LIKES
하나의 Form을 여러개 띄우는 방법좀 알려주세요...
김일영
•
2000.11.14 02:56
예를 들어 띄울 폼의 타입이 TForm2라면 띄울때마다 Form2[K] := TForm2.Create(Self); 물론 K는 증가하...
한두경
2000.11.14 02:40
0
COMMENTS
/
0
LIKES
소켓이 활성화가 안되여...
윤미영
•
2000.11.14 02:07
1
COMMENTS
/
0
LIKES
dbclick과 mouseDown 이벤트를 내용을 다르게 주고 싶을땐 어떻게?
김일영
•
2000.11.14 06:06
유감이지만 이건 윈도우 자체가 그렇게 된 것이므로 MouseDown이 발생되지 않고 DblClick이 발생되게 할 ...
김기학
•
2000.11.14 01:42
1
COMMENTS
/
0
LIKES
인터베이스에서 DB와 TABLE의 동적 생성 방법
허춘
•
2000.11.14 09:04
김기학 wrote: > 첫번째 > - 인터베이스에서 DB를 동적으로 생성할수 있는지요? > - 생성할수 있다면...
바보
2000.11.14 00:49
0
COMMENTS
/
0
LIKES
질문]ASF를 AVI로 변환을 할려면 어떻게 해야합니까.
멍게
2000.11.14 00:48
0
COMMENTS
/
0
LIKES
비디오샵!!(도와주십시요..미치겠습니다)
방경주
•
2000.11.14 00:40
1
COMMENTS
/
0
LIKES
모달폼에 대한 질문임돠...^^
방경주
•
2000.11.14 01:02
방경주 wrote: > 오늘 하루 종일 이것땜시 헤매네여...ㅠㅠ > > 음...모달폼으루 검색창을 하나 띄우는...
궁금이
2000.11.14 00:34
0
COMMENTS
/
0
LIKES
canvas의 내용을 메일로 보낼 수 있나요?
강호은
2000.11.14 00:31
0
COMMENTS
/
0
LIKES
TLargeInteger에 관해...??????
델초보
•
2000.11.14 00:23
1
COMMENTS
/
0
LIKES
화상통신 준비물이 뭔가요?
이경문
•
2000.11.14 02:27
안녕하세요, 화상관련 컴포넌트를 올린 이경문이라고 합니다. 화상통신을 하려면 PC카메라가 우선 있어야 ...
프리지아
•
2000.11.14 00:27
1
COMMENTS
/
0
LIKES
DB를 사용한 ActiveX폼 배포시 질문입니다...
화랑
•
2000.11.17 19:58
프리지아 wrote: > 안녕하세요.. > 질문 그대로 오라클 DB를 사용한 ActiveX폼을 사용할려구 합니다.. >...
질문
2000.11.14 00:25
0
COMMENTS
/
0
LIKES
WebBrowser1에서 access violation error가 생기는데
volf
2000.11.13 23:33
0
COMMENTS
/
0
LIKES
서버에 로그인 하는 폼을 만들고 있습니다. 필드의 값을 변수로 저장하는 방법좀...
사발우성
•
2000.11.14 02:15
1
COMMENTS
/
0
LIKES
쿼리한 결과 값의 래코드카운트 8 이상 부터 찍는 방법은 몬가여 ^^
아자
•
2000.11.14 00:53
흠...질문하러 왔다 같은 경험을 해본 아자~ 임니다...^^; 저두 전에 이런 프린팅 플그램을 짜본적이 있...
김병곤
•
2000.11.13 22:51
1
COMMENTS
/
0
LIKES
인디 컴포넌트로 메일 클라이언트를 작성할때....^^;
권영길
•
2000.11.15 05:25
샘플에 보면 잘 되어있습니다. winshoe에서는 깨지는 부분 있었는데 indy에서는 깨지는 경우(Decoding)이 ...
이원택
2000/11/14 03:40
Views
287
Likes
0
Comments
2
Reports
0
Tag List
수정
삭제
목록으로
한델 로그인 하기
로그인 상태 유지
아직 회원이 아니세요? 가입하세요!
암호를 잊어버리셨나요?
> "19991231"과 "20000101"이라는 두 값으로 경과일을 계산하여 1일이라고
> Edit Box에 나타내려고 합니다...
> 어떻게 해야하는지 궁금하군요...
> 고수님들의 여러 답변 부탁드립니다..
방법은 여러가지인데...
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Mask;
type
TForm1 = class(TForm)
Button1: TButton;
MaskEdit1: TMaskEdit;
MaskEdit2: TMaskEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
Function GetGapDays(bbDate,aaDate:TDateTime):integer;
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
Function TForm1.GetGapDays(bbDate,aaDate:TDateTime):integer;
begin
result:=DateTimeToTimeStamp(bbDate).Date-DateTimeToTimeStamp(aaDate).Date;
end;
{Procedure TForm1.Button1Click(Sender:TObject);
var
aYear, aMonth, aDay, aDate:string;
bYear, bMonth, bDay, bDate:string;
sbDate, saDate:TDateTime;
iGapDays:integer;
begin
aDate:=maskedit1.text; //20000301(aDate)
bDate:=maskedit2.text; //20000411(bDate)
//----10001010형식을--"1000-10-10"형식으로변환----------------
aYear:=copy(aDate,1,4); //2000
aMonth:=copy(aDate,5,2); //03
aDay:=copy(aDate,7,2); //01
aDate:=aYear+'-'+aMonth+'-'+aDay; //2000-03-01
bYear:=copy(bDate,1,4); //2000
bMonth:=copy(bDate,5,2); //04
bDay:=copy(bDate,7,2); //01
bDate:=bYear+'-'+bMonth+'-'+bDay; //2000-04-11
//-------------예외처리(시작)----------------------------------
try
saDate:=StrToDateTime(aDate);
except
//begin
Application.MessageBox('유효하지 못한 날짜를 입력하셨습니다','첫번째날짜입력
란', mb_ok);
exit;
//end;
try
sbDate:=StrToDateTime(bDate);
except
//begin
Application.MessageBox('유효하지 못한 날짜를 입력하셨습니다' ,'두번째날짜입력
란', mb_ok);
exit;
//end;
//-------------예외처리(끝)-----------------------------------
iGapDays:=GetGapDays(sbDate,saDate);
ShowMessage(IntToStr(iGapDays));
end; }
procedure TForm1.Button1Click(Sender: TObject);
var
aYear, aMonth, aDay, aDate:string;
bYear, bMonth, bDay, bDate:string;
sbDate, saDate:TDateTime;
iGapDays:integer;
begin
aDate:=maskedit1.text; //20000301(aDate)
bDate:=maskedit2.text; //20000411(bDate)
//----10001010형식을--"1000-10-10"형식으로변환----------------
aYear:=copy(aDate,1,4); //2000
aMonth:=copy(aDate,5,2); //03
aDay:=copy(aDate,7,2); //01
aDate:=aYear+'-'+aMonth+'-'+aDay; //2000-03-01
bYear:=copy(bDate,1,4); //2000
bMonth:=copy(bDate,5,2); //04
bDay:=copy(bDate,7,2); //01
bDate:=bYear+'-'+bMonth+'-'+bDay; //2000-04-11
//-------------예외처리(시작)----------------------------------
try
saDate:=StrToDateTime(aDate);
except on EConvertError do
begin
Application.MessageBox('유효하지 못한 날짜를 입력하셨습니다','첫번째날짜입
력란', mb_ok);
exit;
end;
end;
try
sbDate:=StrToDateTime(bDate);
except on EConvertError do
begin
Application.MessageBox('유효하지 못한 날짜를 입력하셨습니다' ,'두번째날짜입
력란', mb_ok);
exit;
end;
end;
//-------------예외처리(끝)-----------------------------------
iGapDays:=GetGapDays(sbDate,saDate);
ShowMessage(IntToStr(iGapDays));
end;
end.