델파이 날짜구현 함수 모음들 > Visual Basic, C & C++

본문 바로가기
사이트 내 전체검색


회원로그인

오늘 33
어제 230
최대 618
전체 354,090
마음을 나누는 인터넷 일기장 - 통플 다이어리
Visual Basic, C & C++

Delphi | 델파이 날짜구현 함수 모음들

페이지 정보

작성자 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 작성일16-09-06 23:23 조회2,694회 댓글0건

본문

날짜를 처리하는 함수 모음 

 

unit Unit1;

 

interface

 

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, 

Dialogs,

StdCtrls;

 

type

TDayOfWeek = 

(Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday);

 

type

TForm1 = class(TForm)

private

{ Private declarations }

public

{ Public declarations }

function dateYear(D: TDateTime): Integer;

function dateMonth(D: TDateTime): Integer;

function dateDay(D: TDateTime): Integer;

function dateBeginOfYear(D: TDateTime): TDateTime;

function dateEndOfYear(D: TDateTime): TDateTime;

function dateBeginOfMonth(D: TDateTime): TDateTime;

function dateEndOfMonth(D: TDateTime): TDateTime;

function dateWeekOfYear(D: TDateTime): Integer;

function dateDayOfYear(D: TDateTime): Integer;

function dateDayOfWeek(D: TDateTime): TDayOfWeek;

function dateLeapYear(D: TDateTime): Boolean;

function dateBeginOfQuarter(D: TDateTime): TDateTime;

function dateEndOfQuarter(D: TDateTime): TDateTime;

function dateBeginOfWeek(D: TDateTime;Weekday: Integer): 

TDateTime;

function dateDaysInMonth(D: TDateTime): Integer;

end;

 

var

Form1: TForm1;

 

implementation

{$R *.DFM}

 

// 날짜의 년도만 발취

function TForm1.dateYear(D: TDateTime): Integer;

var

Year, Month, Day: Word;

begin

DecodeDate(D, Year, Month, Day);

Result := Year;

end;

 

// 날짜의 월만 발취

function TForm1.dateMonth(D: TDateTime): Integer;

var

Year, Month, Day: Word;

begin

DecodeDate(D, Year, Month, Day);

Result := Month;

end;

 

// 날짜의 일만 발취

function TForm1.dateDay(D: TDateTime): Integer;

var

Year,Month,Day : Word;

begin

DecodeDate (D,Year,Month,Day);

Result := Day;

end;

 

// 년의 시작일자

function TForm1.dateBeginOfYear(D: TDateTime): TDateTime;

var

Year, Month, Day: Word;

begin

DecodeDate(D, Year, Month, Day);

Result := EncodeDate(Year, 1, 1);

end;

 

// 년의 마지막일자

function TForm1.dateEndOfYear(D: TDateTime): TDateTime;

var

Year, Month, Day: Word;

begin

DecodeDate(D, Year, Month, Day);

Result := EncodeDate(Year, 12, 31);

end;

 

// 월의 시작일자

function TForm1.dateBeginOfMonth(D: TDateTime): TDateTime;

var

Year, Month, Day: Word;

begin

DecodeDate(D, Year, Month, Day);

Result := EncodeDate(Year, Month, 1);

end;

 

// 월의 마지막일자

function TForm1.dateEndOfMonth(D: TDateTime): TDateTime;

var

Year, Month, Day: Word;

begin

DecodeDate(D, Year, Month, Day);

if Month = 12 then

begin

Inc(Year);

Month := 1;

end

else

Inc(Month);

 

{월의 다음월의 시작일에서 1을 뺀다}

Result := EncodeDate(Year, Month, 1) - 1;

end;

 

// 년을 기준으로 몇번째 주인지

function TForm1.dateWeekOfYear(D: TDateTime): Integer;

const

t1: array[1..7] of ShortInt = ( -1, 0, 1, 2, 3, -3, -2);

t2: array[1..7] of ShortInt = ( -4, 2, 1, 0, -1, -2, -3);

var

doy1, doy2: Integer;

NewYear: TDateTime;

begin

NewYear := dateBeginOfYear(D);

doy1 := dateDayofYear(D) + t1[DayOfWeek(NewYear)];

doy2 := dateDayofYear(D) + t2[DayOfWeek(D)];

if doy1 <= 0 then

Result := dateWeekOfYear(NewYear-1)

else if (doy2 >= dateDayofYear(dateEndOfYear(NewYear))) then

Result:= 1

else

Result:=(doy1-1) div 7+1;

end;

 

// 년을 기준으로 몇번째 일인지

function TForm1.dateDayOfYear(D: TDateTime): Integer;

begin

Result := Trunc(D-dateBeginOfYear(D)) + 1;

end;

 

// 요일 번호

function TForm1.dateDayOfWeek(D: TDateTime): TDayOfWeek;

begin

Result := TDayOfWeek(Pred(DayOfWeek(D)));

end;

 

// 윤년인지 검사

function TForm1.dateLeapYear(D: TDateTime): Boolean;

var

Year, Month, Day: Word;

begin

DecodeDate(D, Year, Month, Day);

Result := (Year mod 4 = 0) and ((Year mod 100 <> 0) or (Year mod 400 

= 0));

end;

 

// 주어진 일자가 포함된 분기의 시작일

function TForm1.dateBeginOfQuarter(D: TDateTime): TDateTime;

var

Year, Month, Day: Word;

begin

DecodeDate(D, Year, Month, Day);

Result := EncodeDate(Year, (((Month-1) div 3) * 3)+1, 1);

end;

 

// 주어진 일자가 포함된 분기의 마지막일

function TForm1.dateEndOfQuarter(D: TDateTime): TDateTime;

begin

Result := dateBeginOfQuarter(dateBeginOfQuarter(D)+(3*31)) - 1;

end;

 

// 주의 시작일

function TForm1.dateBeginOfWeek(D: TDateTime; Weekday: Integer): 

TDateTime;

begin

Result := D;

while DayOfWeek(Result) <> Weekday do

Result := Result - 1;

end;

 

// 월의 마지막 일

function TForm1.dateDaysInMonth(D: TDateTime): Integer;

const

DaysPerMonth: array[1..12] of Byte= 

(31,28,31,30,31,30,31,31,30,31,30,31);

var

Month: Integer;

begin

Month := dateMonth(D);

Result := DaysPerMonth[Month];

if (Month=2) and dateLeapYear(D) then

Inc(Result);

end;

 

end.

추천 0

댓글목록

등록된 댓글이 없습니다.

Visual Basic, C & C++ 목록

Total 31건 1 페이지
Visual Basic, C & C++ 목록
번호 제목 글쓴이 날짜 조회 추천
31 Delphi [델파이] Frame의 속성 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 06-01 899 0
열람중 Delphi 델파이 날짜구현 함수 모음들 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 09-06 2695 0
29 Delphi 델파이 팁들 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 09-06 3680 0
28 Delphi [radstudio] 배포시 독립 실행 파일 만들기 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 09-04 2878 0
27 Delphi Delphi 2007 Debug running 중 "bordbk105N.dll"오류 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 02-18 4526 0
26 Delphi 윈도+델파이 환경에서 리눅스용 실행파일을 만들 수 있다는 CrossKylix 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 04-02 8207 0
25 Delphi [펌] 델파이 객체지향프로그래밍을 위한 20가지 규칙 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 12-26 11701 0
24 Delphi Rad XE2 ~ XE4 에서 mysql 5.5 ~ 5.6 libmysql 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 12-04 9510 0
23 Delphi 델파이에서 날짜 더하고 빼기 예제 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 11-20 10252 0
22 Delphi EDIT 컴포넌트 숫자만 입력, 오른쪽 정렬 등등 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 11-20 12183 0
21 Delphi Edit에 수치값만 입력 가능하게(소수, 음수입력 가능) 자리수 제한 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 11-19 10702 0
20 Delphi [펌] TChart 기본정보 및 사용팁 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 11-18 9756 0
19 Delphi [펌] 폼 크기에 맞게 자동으로 컴포넌트 크기 조절하기 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 11-18 9836 0
18 Delphi [펌] 델파이 기본 컴포넌트2 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 11-18 11005 0
17 Delphi [펌] 델파이 기본 컴포넌트1 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 11-18 11040 0
16 Delphi 델파이에서 ie 창 띄우기 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 11-13 10504 0
15 Delphi [양병규님 세미나 자료] 계산기 소스 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 11-13 11824 0
14 Delphi 델파이 eval 함수 비슷하게 구현 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 11-13 8570 0
13 Delphi Firebird 포트 넘버 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 11-13 8240 0
12 Delphi zeos설치하기 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 10-28 7549 0
게시물 검색

Copyright © nuno21.net All rights reserved. 상단으로
모바일 버전으로 보기