Q&A
HOME
Tips & Tech
Q&A
Discuss
Download
자유게시판
홍보 / 광고
구인 / 구직
LOGIN
회원가입
데이트 타임 피치에서
데이트 타임 피치에서 날짜 선택시 그날짜가 속하는 1주간을 어떻게 받아오나요
1
COMMENTS
이재식
•
2000.02.29 07:08
초보맨 wrote:
> 데이트 타임 피치에서 날짜 선택시 그날짜가 속하는 1주간을 어떻게 받아오나요
>
이재식 Wrote :
안녕하세요?
위 문제는 제가 일전에 두 날짜사이의 기간차이를 구해서 그것을
x년xx개월x일로 표현하는 코딩을 올려놓은적이 있습니다.
그것을 찾아서 약간만 응용하시면 해결됩니다.
아래에 위 문제에대해 나름대로 작성한 코딩입니다.
소스를 보시면 폼위에 무엇을 올려놓고 테스해 보아야 하는지
알 것입니다. 제가 테스트 해보기로는 특정일자에대해 해당 1주간의 일자를
잘 가져옵니다.
그런데, 가져오되 1주간의 일자들만 가져옵니다.
가져오는 1주간이 반드시 7이 아닐수 있습니다. 그렇죠?
어떤 주는 1개, 어떤주는 3개 등등 다양할 것입니다.
아래의 소스는 메모장에 1주간의 일자를 가져오되
요일은 표현하지 않습니다.
즉,만약에 2000년 2월 3일을 선택하면 1, 2, 3, 4, 5를 가져올 것입니다.
그러나, 이들에대한 요일을 표현하지 않았습니다.
표현방법은 역시 WeekOfDay를 쓰시면 금방 구현할 수 있을 것입니다.
여기까지 필요하시다면 변경하시면 될 것입니다.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ComCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
DateTimePicker1: TDateTimePicker;
Memo1: TMemo;
procedure DateTimePicker1CloseUp(Sender: TObject);
private
{ Private declarations }
function HowDaysPerMonth (myYear, myMonth : integer) : integer ;
function IsYeunYear (myYear : integer) : integer ;
public
{ Public declarations }
end;
var
Form1: TForm1;
Week : array[1..7] of integer ;
implementation
{$R *.DFM}
procedure TForm1.DateTimePicker1CloseUp(Sender: TObject);
var
year, month, Day : integer ;
Days : integer ;
Curyeoil : integer ;
TempDay : integer ;
i, index : integer ;
begin
Memo1.Lines.Clear ;
for i := 1 to 7 do
Week[i] := 0 ;
index := 1 ;
year := StrToInt(formatDateTime ('YYYY', DateTimePicker1.date)) ;
month := StrToInt(formatDateTime ('MM', DateTimePicker1.date)) ;
Day := StrToInt(FormatDateTime('DD', DateTimePicker1.Date)) ;
Days := HowDaysPerMonth (year, month) ;
Curyeoil := DayOfWeek (DateTimePicker1.Date) ;
i := CurYeoil ;
TempDay := Day ;
for i := CurYeoil downto 1 do
begin
Week[i] := TempDay ;
TempDay := TempDay - 1 ;
end ;
TempDay := Day ;
for i := CurYeoil + 1 to 7 do
begin
TempDay := TempDay + 1 ;
Week[i] := TempDay ;
end ;
for i := 1 to 7 do
begin
if (Week[i] <= 0) or (Week[i] > Days) then
continue
else
Memo1.Lines.Add(IntToStr(Week[i])) ;
end ;
end;
function TForm1.HowDaysPerMonth(myYear, myMonth: integer): integer;
Const
DaysPerMonth : array[1..12] of integer
= (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31) ;
begin
if (myMonth = 2) and (IsYeunYear(myYear) = 1) then
result := DaysPerMonth[myMonth] + 1
else
result := DaysPerMonth[myMonth] ;
end;
function TForm1.IsYeunYear(myYear: integer): integer;
begin
if (myYear mod 4 = 0) and
(myYear mod 100 <> 0) or (myYear mod 400 = 0) then
result := 1
else
result := 0 ;
end;
end.
0
0
삭제
수정
댓글
(NOTICE) You must be
logged in
to comment on this post.
한승구
2000.02.29 19:28
0
COMMENTS
/
0
LIKES
TV TUNING 어떻게 해야 하나요?
송미정
•
2000.02.29 19:23
2
COMMENTS
/
0
LIKES
스트링 그리드에서 숫자 입력시 발생하는 에러
술친구
•
2000.02.29 22:39
송미정 wrote: > 스트링 그리드에서 하나의 컬럼에는 숫자만 입력되도록 코드를 작성했습니다. > 처음에 ...
송미정
•
2000.03.01 00:49
답변은 감사합니다. 그런데 숫자를 입력 받는 루틴은 저도 작성을 해서 잘 사용하는데 한번씩 숫자를 문...
문영봉
•
2000.02.29 19:21
2
COMMENTS
/
0
LIKES
[요청] 혹시 sql과 연결한 예제가 어디 없을까요?
김광섭
•
2000.03.01 00:10
문영봉 wrote: > 안녕하세요? 많은 도움을 받고 있는데요.. > ms-sql 과 델파이 4 와 연동하여 > 입력 ...
젠키
•
2000.02.29 20:09
문영봉 wrote: > 안녕하세요? 많은 도움을 받고 있는데요.. > ms-sql 과 델파이 4 와 연동하여 > 입력 ...
초짜
•
2000.02.29 13:47
1
COMMENTS
/
0
LIKES
마우스포인터의 좌표값과 폼내의 좌표값에 대해서....
하얀까마귀
•
2000.02.29 22:10
----------------------------------------- 윈도우에서의 좌표값은 변환이 가능합니다. ScreenToClie...
박주명
•
2000.02.29 12:45
1
COMMENTS
/
0
LIKES
프로젝트파일에서 Function을 쓸수 있나요?
하얀까마귀
•
2000.02.29 22:18
------------------ 안녕하세요 하얀까마귀입니다. 결론부터 말씀드리면 사용하실수 있습니다. 단지 사...
초보
•
2000.02.29 10:56
2
COMMENTS
/
0
LIKES
DateTimePicker 가 이상해요..
하얀까마귀
•
2000.02.29 22:33
안녕하세요 하얀까마귀입니다. 음 제가 보기에 문제는 위의 분의 말씀대로 국가별 설정의 날짜설정과 현재...
이재식
•
2000.02.29 19:46
초보 wrote: > TDateTimePicker 의 Date형이 아래와 같이 이상하게 보여요.. > > 00-02-29 가 -02-29 ...
peter60
2000.02.29 09:13
0
COMMENTS
/
0
LIKES
로컬db를 lan상에서 돌리는데 문제발생!!!! 도와주세요.
김상현
•
2000.02.29 07:55
1
COMMENTS
/
0
LIKES
컨트롤(텍스트 박스)를 배열로 만드는 방법
이재식
•
2000.02.29 22:51
김상현 wrote: > 관리 프로그램을 공부 삼아서 짜고 있는데, 비주얼 베이직과는 배열 선언하는 방법이 ...
형욱
2000.02.29 07:39
0
COMMENTS
/
0
LIKES
Lan 프로그램 개발에 대해서...
최성진
•
2000.02.29 06:59
2
COMMENTS
/
0
LIKES
오라클과델파이에서 뷰사용하기
Queue
•
2000.02.29 21:41
View의 약점은 변수를 받을 수 없다는데.. 있습니다.. 가슴 아픈 점이져... 값이 바뀔 때마다.. 바꿔...
Queue
•
2000.02.29 21:45
뒤에 안 쓴 것 같아 다시 적습니다... ............ sql.add('create or replace view view_name as'); ...
장준수
•
2000.02.29 06:33
2
COMMENTS
/
0
LIKES
Quick Report를 세로로 출력하는 법 아시는분..
김광섭
•
2000.02.29 23:57
장준수 wrote: > 국내 델파이 사이트중 가장 잘 정비되었는 사이트로 판단되어, > 도움을 청하고자 합니...
이재식
•
2000.02.29 07:28
장준수 wrote: > 국내 델파이 사이트중 가장 잘 정비되었는 사이트로 판단되어, > 도움을 청하고자 합니...
park
•
2000.02.29 05:43
1
COMMENTS
/
0
LIKES
특정 디렉토리에 있는 화알들
이현우
•
2000.02.29 19:03
park wrote: > 특정 디렉토리내에 있는 bmp화일만 db에 저장하는 법을 > 알고계시면 가르쳐 주세요.. > ...
zeronine
•
2000.02.29 04:16
1
COMMENTS
/
0
LIKES
왕초보입니다. Table을.....
젠키
•
2000.02.29 18:05
zeronine wrote: > 안녕하세요! > 입력, 삭제, 수정 프로그램을 짤려고 합니다. > 만약에 Table을 anima...
전용호
•
2000.02.29 04:07
1
COMMENTS
/
0
LIKES
퀵리포트에서 여러개의 데이터가 안들어감..
이재식
•
2000.02.29 05:23
전용호 wrote: > 퀵리포트를 쓰면 원래 여러개의 데이터가 들어가는 줄 알고 있거든요.. > 그런데 이상하...
우경확
2000.02.29 04:07
0
COMMENTS
/
0
LIKES
ShellExecute를 사용하는데 있어서 문제가..
이중락
2000.02.29 04:03
0
COMMENTS
/
0
LIKES
델에서는 정녕 DirectShow를 사용할수 없는것인가!!
정영민
•
2000.02.29 03:46
1
COMMENTS
/
0
LIKES
ActiveX vs CGI vs ISAPI 질문입니다..^_^
화랑
•
2000.02.29 06:00
제가 생각하기로는 굳이 델파이를 사용할 필요는 없다고 봅니다.. Active X 를 사용하려면 물론 BDE도 ...
정영민
2000.02.29 03:42
0
COMMENTS
/
0
LIKES
[ActiveX]웹디비를 핸들링하는데..
김용진
2000.02.29 03:35
0
COMMENTS
/
0
LIKES
이재식 氏 보세요..(고맙습니다)
초보맨
•
2000.02.29 03:30
1
COMMENTS
/
0
LIKES
데이트 타임 피치에서
데이트 타임 피치에서 날짜 선택시 그날짜가 속하는 1주간을 어떻게 받아오나요
이재식
•
2000.02.29 07:08
초보맨 wrote: > 데이트 타임 피치에서 날짜 선택시 그날짜가 속하는 1주간을 어떻게 받아오나요 > ...
초보맨
2000/02/29 03:30
Views
194
Likes
0
Comments
1
Reports
0
Tag List
수정
삭제
목록으로
한델 로그인 하기
로그인 상태 유지
아직 회원이 아니세요? 가입하세요!
암호를 잊어버리셨나요?
> 데이트 타임 피치에서 날짜 선택시 그날짜가 속하는 1주간을 어떻게 받아오나요
>
이재식 Wrote :
안녕하세요?
위 문제는 제가 일전에 두 날짜사이의 기간차이를 구해서 그것을
x년xx개월x일로 표현하는 코딩을 올려놓은적이 있습니다.
그것을 찾아서 약간만 응용하시면 해결됩니다.
아래에 위 문제에대해 나름대로 작성한 코딩입니다.
소스를 보시면 폼위에 무엇을 올려놓고 테스해 보아야 하는지
알 것입니다. 제가 테스트 해보기로는 특정일자에대해 해당 1주간의 일자를
잘 가져옵니다.
그런데, 가져오되 1주간의 일자들만 가져옵니다.
가져오는 1주간이 반드시 7이 아닐수 있습니다. 그렇죠?
어떤 주는 1개, 어떤주는 3개 등등 다양할 것입니다.
아래의 소스는 메모장에 1주간의 일자를 가져오되
요일은 표현하지 않습니다.
즉,만약에 2000년 2월 3일을 선택하면 1, 2, 3, 4, 5를 가져올 것입니다.
그러나, 이들에대한 요일을 표현하지 않았습니다.
표현방법은 역시 WeekOfDay를 쓰시면 금방 구현할 수 있을 것입니다.
여기까지 필요하시다면 변경하시면 될 것입니다.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ComCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
DateTimePicker1: TDateTimePicker;
Memo1: TMemo;
procedure DateTimePicker1CloseUp(Sender: TObject);
private
{ Private declarations }
function HowDaysPerMonth (myYear, myMonth : integer) : integer ;
function IsYeunYear (myYear : integer) : integer ;
public
{ Public declarations }
end;
var
Form1: TForm1;
Week : array[1..7] of integer ;
implementation
{$R *.DFM}
procedure TForm1.DateTimePicker1CloseUp(Sender: TObject);
var
year, month, Day : integer ;
Days : integer ;
Curyeoil : integer ;
TempDay : integer ;
i, index : integer ;
begin
Memo1.Lines.Clear ;
for i := 1 to 7 do
Week[i] := 0 ;
index := 1 ;
year := StrToInt(formatDateTime ('YYYY', DateTimePicker1.date)) ;
month := StrToInt(formatDateTime ('MM', DateTimePicker1.date)) ;
Day := StrToInt(FormatDateTime('DD', DateTimePicker1.Date)) ;
Days := HowDaysPerMonth (year, month) ;
Curyeoil := DayOfWeek (DateTimePicker1.Date) ;
i := CurYeoil ;
TempDay := Day ;
for i := CurYeoil downto 1 do
begin
Week[i] := TempDay ;
TempDay := TempDay - 1 ;
end ;
TempDay := Day ;
for i := CurYeoil + 1 to 7 do
begin
TempDay := TempDay + 1 ;
Week[i] := TempDay ;
end ;
for i := 1 to 7 do
begin
if (Week[i] <= 0) or (Week[i] > Days) then
continue
else
Memo1.Lines.Add(IntToStr(Week[i])) ;
end ;
end;
function TForm1.HowDaysPerMonth(myYear, myMonth: integer): integer;
Const
DaysPerMonth : array[1..12] of integer
= (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31) ;
begin
if (myMonth = 2) and (IsYeunYear(myYear) = 1) then
result := DaysPerMonth[myMonth] + 1
else
result := DaysPerMonth[myMonth] ;
end;
function TForm1.IsYeunYear(myYear: integer): integer;
begin
if (myYear mod 4 = 0) and
(myYear mod 100 <> 0) or (myYear mod 400 = 0) then
result := 1
else
result := 0 ;
end;
end.