일반적으로 델파이에는 시간을 기술하는 데 사용되는 여러 데이터 구조가 있으며, 시간의 연산은 본질적으로 이러한 구조의 연산입니다.
TDateTime 유형:
델파이에서 날짜와 시간을 나타내는 가장 일반적으로 사용되는 데이터 유형은 TDateTime 유형입니다. 일반 정수와 마찬가지로 프로그램에서 작동할 날짜에 대한 날짜 변수를 정의할 수 있습니다. TdateTime 유형은 본질적으로 Double 유형 숫자입니다. TdateTime 유형은 Delphi에서 다음과 같이 정의됩니다: TDateTime 유형 = Double 유형. 특정 알고리즘은 Double 숫자의 정수 부분을 사용하여 1989년 12월 30일을 날짜로 표시하는 것입니다. 예를 들어 숫자 1은 1900년 1월 1일을 나타내고 숫자 -1은 1989년 12월 29일을 나타냅니다. 소수 부분은 시간을 표현하는 데 사용되며 그 값은 하루 전체의 총 시간에 대한 표현되는 시간의 비율입니다. 예를 들어 오전 6시는 6/24=0.25이고 6은 다음과 같습니다. 15 in the morning은 (6*60+15)/ (24*60)=0.26041666666666666666666666667입니다. 아래에는 TDateTime 유형과 Double 유형 간의 상호 작용을 설명하기 위한 몇 가지 예가 나와 있습니다.
0 1899년 12월 30일 00:00:00
2.75 1900년 1월 1일 18:00:00
-1.25 1899년 12월 29일 6:00:00
35065 1996년 1월 1일 00:00:00
TdateTime과 Double 사이의 변환 방법은 누구나 이해할 수 있다고 생각합니다. 따라서 TDateTime의 작동 방식은 Double의 작동 방식과 기본적으로 동일합니다.
TTimeStamp 유형:
이것은 날짜와 시간을 설명하는 데 사용되는 구조 유형입니다. Delphi에서는 다음과 같이 정의됩니다.
type TTimeStamp = Record Time: Integer; {자정 0시부터 지정된 시간까지의 밀리초 수} Date: Integer {오늘부터 지정된 날짜까지의 일 수} end;
TDateTime에 비해 고정밀도의 시간을 보다 직관적으로 표현할 수 있으며, 일반적으로 밀리초 수준의 연산이나 더 긴 시간을 표현하는 데 사용됩니다.
PsystemTime 유형:
WinApi에서 시간 작업에 사용되는 포인터 구조입니다. 그의 정의는 다음과 같습니다.
유형 PSystemTime = ^TSystemTime = wYear: Word; wDayOfWeek: Word; wHour: Word; wMilliseconds: Word;
이 구조는 주로 WinApi 작업을 호출할 때 사용됩니다.
다양한 시간 유형의 본질을 이해한 후에는 모든 사람이 이러한 유형의 시간을 조작하기 위한 일련의 아이디어를 갖고 있다고 생각합니다. 그러나 Delphi는 또한 시간을 조작하기 위한 완전한 프로세스 기능 세트를 SysUnit에 정의합니다. 이제 Delphi의 관련 기능을 소개하겠습니다.
시간 조작을 위한 함수
날짜 기능:
정의: 날짜: TDateTime;
기능: 현재 날짜를 반환합니다.
예:
현재 날짜 := 날짜;
DayOfWeek 함수:
정의: function DayOfWeek(Date: TDateTime): 정수;
함수: 지정된 날짜의 요일 값을 가져오고 일요일부터 토요일을 나타내는 1~7을 반환합니다.
IncMouth 기능:
정의: 함수 IncMonth(const Date: TDateTime; NumberOfMonths: Integer): TDateTime;
기능: NumberOfMonths개월 이후에 주어진 날짜 데이터의 날짜를 찾습니다.
예:
Date1 := IncMonth(날짜,10);
오늘이 2002-5-3이면 Date1은 2003-3-3입니다.
IsLeapYear 함수:
정의: 함수 IsLeapYear(연도: 단어): 부울;
기능: 지정된 연도가 윤년인지 확인합니다.
예:
if isLeapYear(2000) then ShowMessage('올해는 윤년입니다.');
이제 기능:
정의: 기능 현재: TDateTime;
기능: 현재 날짜와 시간을 가져오는 데 사용됩니다.
예:
CurrentDateTime := 지금;
교체 날짜 프로시저
정의: 절차 교체 날짜(var DateTime: TDateTime; const NewDate: TDateTime);
기능: 매개변수 Newdate의 날짜 부분을 사용하여 매개변수 DateTime의 날짜 부분을 대체하되 시간 부분은 변경하지 마십시오.
교체 날짜 프로시저
정의: 프로시저 바꾸기Time(var DateTime: TDateTime; const NewTime: TDateTime);
기능: 매개변수 Newdate의 시간 부분을 사용하여 매개변수 DateTime의 시간 부분을 대체하되 날짜 부분은 변경하지 마십시오.
위의 두 프로세스를 함께 사용하면 할당과 동일합니다.
시간 기능:
정의: 기능 시간: TDateTime;
기능: 현재 시간을 반환
예:
현재시간 := 시간;
다양한 시간 유형 간 변환 기능
DateTimeToFileDate 함수:
정의: DateTimeToFileDate(DateTime: TDateTime): 정수;
기능: TDateTime 유형의 시간을 Dos 환경의 시간으로 변환합니다. 파일 작업을 수행할 때 시간 일관성을 유지하려면 DateTimeToFileDate 함수를 사용해야 합니다. 변환 후 반환되는 정수 값은 Dos에서 시간을 설명하는 데 사용되는 값입니다.
DateTimeToSystemTime 프로시저:
정의: 프로시저 DateTimeToSystemTime(DateTime: TDateTime; var SystemTime: TSystemTime);
기능: TDateTime 유형의 시간을 Win API 함수에서 사용하는 TSystemTime 유형으로 변환합니다. 이는 WinApi 함수를 사용하여 시간을 조작할 때 사용됩니다.
SystemTimeToDateTime 함수:
정의: 함수 SystemTimeToDateTime(const SystemTime: TSystemTime): TDateTime;
기능: WinApi 함수에서 얻은 TSysTemTime 유형 번호를 TDateTime 유형으로 변환합니다.
DateTimeToTimeStamp 함수:
TimeStampToDateTime 함수:
정의: DateTimeToTimeStamp(DateTime: TDateTime): TTimeStamp;
함수 TimeStampToDateTime(const TimeStamp: TTimeStamp): TDateTime;
기능: TDataTime 유형과 TTimeStamp 간 변환에 사용됩니다. TDataTime은 double을 사용하여 시간을 설명하는 반면, TTimeStamp는 두 개의 정수를 사용하여 각각 시간을 설명합니다. 두 유형의 차이점은 기사 시작 부분의 데이터 유형 설명 섹션에서 확인할 수 있습니다.
EncodeDate 함수:
정의: 함수 EncodeDate(년, 월, 일: 단어): TDateTime;
기능: 연, 월, 일 값을 입력하고 날짜를 TDateTime 타입으로 반환합니다. 연도 범위는 1~9999, 월 범위는 1~12, 날짜 범위는 현재 월을 기준으로 합니다. 이 상황에서 입력한 값이 범위를 벗어나면 EConvertError가 생성됩니다.
DecodeDate 프로세스:
정의: 프로시저 DecodeDate(날짜: TDateTime; var 연도, 월, 일: 단어);
기능: TDateTime 유형의 날짜를 입력하고 이를 연, 월, 일 값으로 변환합니다. 입력값이 0이거나 0보다 작으면 연, 월, 일이 모두 0이 되고,
EncodeTime 함수:
정의: EncodeTime(시, 분, 초, MSec: 워드): TDateTime;
기능: 시(Hour), 분(min), 초(Sec), 마이크로초(MSec)의 값을 입력하고, 0과 1 사이의 십진수인 TDateTime 유형의 시간을 반환합니다. Hour 값 범위는 0~23, Min 값 범위는 0~59, Sec 값 범위는 0~59, MSec 값 범위는 0~999입니다. EConvertError가 발생했습니다.
DecodeTime 프로세스:
정의: 프로시저 DecodeTime(Time: TDateTime; var Hour, Min, Sec, MSec: Word);
기능: 시간을 입력하고 이를 시, 분, 초, 마이크로초(MSec)로 변환합니다.
TDateTime 유형 및 문자열 유형 변환 함수:
DateTimeToStr 함수:
DateToStr 함수
TimeToStr 함수
정의: 함수 DateTimeToStr(DateTime: TDateTime): 문자열;
함수 TimeToStr(Time: TDateTime): 문자열;
함수 TimeToStr(Time: TDateTime): 문자열;
기능: TDateTime 유형 숫자를 문자열로 변환하고, DateTimeToStr은 날짜와 시간을 변환하고, DateToStr은 날짜만 변환하고, TimeToStr은 시간만 변환합니다. 변환된 출력 효과는 YYYY-MD H:M:S입니다.
StrToDateTime 함수
StrToDate 함수
StrToTime 함수
정의: 함수 StrToDateTime(const S: 문자열): TDateTime;
함수 StrToDate(const S: string): TDateTime;
함수 StrToTime(const S: string): TDateTime;
기능: 날짜 및 시간 형식의 문자열을 TDateTime으로 변환합니다. 여기서 S는 다음과 같은 유효한 문자열이어야 합니다.
YY-MM-DD HH:MM:SS 형식입니다. 그렇지 않으면 EConvertError 이벤트가 트리거되고 오류 메시지가 표시됩니다.
시간 부분의 문자열은 2~3개의 숫자 문자열로 구성되어야 하며 Windows 지역 설정에 설정된 구분 문자로 구분되어야 합니다. 형식 요구 사항은 HH, MM(시간, 분)을 추가해야 하며, SS(초)는 선택 사항이며, 끝에 Am과 Pm을 추가하여 오전과 오후를 구분할 수도 있습니다. 이때 시스템은 12시간 표시가 사용되는 것으로 간주합니다. 그렇지 않으면 12시간 단위로 표시됩니다. 24시간 표현이 사용되는 것으로 간주됩니다.
날짜 부분의 형식은 Windows 국가별 설정의 간단한 날짜 형식을 준수해야 하며, 이 역시 2~3개의 숫자 문자열로 구성됩니다. 문자열에 숫자가 2개만 있으면 월과 날짜로 간주됩니다. 지정되었으며 연도는 현재 연도입니다.
로케일이 두 자리 연도 표시를 사용하는 경우 시스템은 이를 다음과 같이 처리합니다.
현재 연도의 시작 연도 기준 값은 03년을 입력합니다. 50년을 입력합니다. 68년을 입력합니다.
1998 0 1900 1903 1950 1968
2002 0 2000 2003 2050 2068
1998 50 1948 2003 1950 1968
2000 50 1950 2003 1950 1968
2002 50 1952 2003 2050 1968
2020 50 1970 2003 2050 2068
2020 10 2010 2103 2050 2068
먼저 지역 설정에서 두 자리 연도의 시작 연도를 구합니다. 예를 들어 지역 설정에서 두 자리 연도 범위가 1932-2031로 설정된 경우 시작 연도는 32년입니다. 0이면 두 자리 숫자로 간주됩니다. 연도가 실제로 0보다 크면 현재 연도에서 시작 연도를 뺀 값이 사용됩니다. 이 값 이상이면 이번 세기로 간주되고, 그렇지 않으면 다음 세기로 간주됩니다. 다음은 몇 가지 예입니다.
DateTimeToString 프로시저:
FormatDateTime 함수:
정의: 프로시저 DateTimeToString(var 결과: 문자열; const 형식: 문자열; DateTime: TDateTime);
함수 FormatDateTime(const 형식: 문자열; DateTime: TDateTime): 문자열;
기능: Format 문자열에 형식을 정의하여 출력할 시간 문자열을 가져옵니다. 예를 들어 "오늘은 2002년 5월 5일 금요일입니다."를 출력하려는 경우 두 가지 방법은 동일합니다. 함수이지만 출력 문자열은 Result에 있습니다. 다른 하나는 반환 값을 통해 출력 문자열을 얻는 것입니다. DateTime 형식은 출력하려는 날짜 값입니다. 플래그와 추가 문자열. 추가 문자열은 C의 Printf 함수와 마찬가지로 ""로 둘러싸여 있습니다. 예를 들어 "오늘은 2002년 5월 5일 금요일"의 형식 값은 '" 오늘은 "yyyy" 연도 "mm" 월 "dd"입니다. day ," dddd', yyyy, mm, dd, dddd는 모두 형식 식별자입니다. 다양한 형식 식별자에 대한 설명은 다음과 같습니다.
d: 일(1-31)을 표시하려면 하나 또는 두 개의 정수를 사용하십시오.
dd: 일을 표시하려면 두 개의 정수를 사용하고 두 자리 미만(01-31)을 구성하려면 0을 사용합니다.
ddd: 현재 주 번호를 약어로 표시합니다. Windows가 영어 버전인 경우 Mon-Sun으로 표시됩니다. 중국어 버전인 경우 dddd로 표시됩니다.
dddd: 현재 주 번호를 전체 형식으로 표시합니다. Windows가 영어 버전인 경우 Monday-SumDay가 표시됩니다. 중국어 버전인 경우 Monday-Sunday가 표시됩니다.
ddddd : 로케일의 간단한 날짜 형식으로 출력합니다.
dddddd : 로케일의 긴 날짜 형식으로 출력합니다.
m: 하나 또는 두 개의 정수를 사용하여 월(1-12)을 표시합니다.
mm: 두 개의 정수를 사용하여 월을 표시합니다. 두 자리 미만인 경우 0을 사용하여 구성합니다(01-12).
mmm: 월 이름을 표시하려면 약어를 사용합니다. 영어 버전은 Jan-Dec로 표시되고 중국어 버전은 mmmm과 동일합니다.
mmmm: 월 이름을 표시하려면 완전한 방법을 사용하십시오. 영어 버전은 1월~12월을 표시하고 중국어 버전은 1월~12월을 표시합니다.
yy: 연도를 두 자리 정수(00-99)로 표시합니다.
yyyy : 연도를 4자리 정수로 표시(0000-9999)
h: 하나 또는 두 개의 정수를 사용하여 시간(0-23)을 표시합니다.
hh: 두 개의 정수를 사용하여 시간을 표시합니다. 두 자리 미만인 경우 0을 사용하여 시간을 표시합니다(00-23).
n: 하나 또는 두 개의 정수를 사용하여 분(0-60)을 표시합니다.
nn: 분을 표시하려면 두 개의 정수를 사용하고 두 자리 미만(00-60)을 구성하려면 0을 사용합니다.
s: 하나 또는 두 개의 정수를 사용하여 초(0-60)를 표시합니다.
ss: 두 개의 정수를 사용하여 초를 표시하고 0을 사용하여 두 자리 미만(00-60)을 구성합니다.
z: 1~2개의 정수(0~999)로 밀리초 표시
zzz: 밀리초를 표시하려면 세 자리 정수를 사용합니다. 세 자리 미만인 경우 0을 사용하여 구성합니다(000-999).
tt : 날짜를 로케일 형식으로 표시합니다.
am/pm: 12시간 표시에 사용됩니다. AM은 0시부터 12시까지를 나타내고 pm은 12시부터 0시를 나타냅니다.
시간 관련 변수:
Delphi는 로컬 설정에 대한 다양한 정보를 캡슐화하고 일련의 변수를 정의합니다. 다음은 시간과 관련된 몇 가지 변수입니다.
DateSeparator:문자
연도, 월, 일을 구분하는 데 사용되는 날짜 구분 기호
TimeSeparator:문자
시, 분, 초를 구분하는 데 사용되는 시간 구분 기호
ShortDate형식: 문자열
로케일의 간단한 날짜 형식 정의.
LongDateFormat: 문자열
로케일의 긴 날짜 형식 정의.
ShortTime형식: 문자열
로케일의 짧은 시간 형식 정의.
LongTimeFormat: 문자열
로케일의 긴 형식 정의.
TimeAMString: 문자열
아침을 나타내는 문자열
TimePMString: 문자열
오후를 나타내는 데 사용되는 문자열
ShortMonthNames: 문자열 배열[1..12];
월 이름을 약어로 표시하는 데 사용되는 배열은 FormatDateTime을 사용할 때 표시되는 mmm으로 식별되는 문자열입니다.
LongMonthNames: 문자열 배열[1..12];
월 이름을 완전히 나타내는 데 사용되는 배열은 FormatDateTime을 사용할 때 표시되는 mmmm로 식별되는 문자열입니다.
ShortDayNames: 문자열 배열[1..7];
요일 이름을 약어로 표시하는 데 사용되는 배열은 FormatDateTime 사용 시 표시되는 ddd로 식별되는 문자열입니다.
LongDayNames: 문자열 배열[1..7];
주 이름을 완전히 표현하는 데 사용되는 배열은 FormatDateTime 사용 시 표시되는 ddd로 식별되는 문자열입니다.
TwoDigitYearCenturyWindow:Word = 50;
두 자리 연도를 사용할 경우 시작 연도입니다.
자, 이제 델파이의 시간 연산에 대한 부분은 기본적으로 끝났습니다. 독자들은 실제 프로그래밍을 사용할 때 자신의 필요에 따라 직면하는 문제를 해결하기 위해 해당 도움말 파일을 확인할 수도 있습니다.