System.DateUtils Simple trimming functions 섹션
먼저 Date Utils부터 시작하고 시간이 있으면 업데이트를 할 예정입니다. 초보자이기 때문에 잘못된 말이나 부정확한 점이 있으면 여러분의 조언을 부탁드립니다. 감사합니다!!!
(저는 개인적으로 D6, D72006, XE8을 사용해 봤기 때문에 가장 자주 사용하는 것은 D7이고 현재 최신판델파이는 XE8이기 때문에 앞으로 모든 관련 글은 XE8의 원본으로 연구할 것입니다. 특수 설명은 제외)
System.D:\ProgramFiles\Embarcadero\Studio\16.0\source\rtl\common\System.DateUtils.pas (설치 경로는 반드시 당신들의 것으로 바꿔야 합니다)
먼저 DateOf와 TimeOf의 주장과 실현을 살펴보겠습니다.
// , System.DateUtils 69
{ Simple trimming functions }
function DateOf(const AValue: TDateTime): TDateTime; inline;
function TimeOf(const AValue: TDateTime): TDateTime; inline;
// , System.DateUtils 577
function DateOf(const AValue: TDateTime): TDateTime;
begin
Result := Trunc(AValue);
end;
function TimeOf(const AValue: TDateTime): TDateTime;
begin
Result := Frac(AValue);
end;
다음은 제가 테스트한 코드입니다.
unit UMain;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, system.DateUtils;
type
TFMain = class(TForm)
btnDateOf: TButton;
MMOResult: TMemo;
btnTimeOf: TButton;
procedure FormCreate(Sender: TObject);
procedure btnDateOfClick(Sender: TObject);
procedure btnTimeOfClick(Sender: TObject);
private
FDateFormatSetting: TFormatSettings;
{ Private declarations }
public
{ Public declarations }
end;
var
FMain: TFMain;
sDate: string = '2015-08-10 14:28:28';
implementation
{$R *.dfm}
procedure TFMain.btnDateOfClick(Sender: TObject);
var
dBefore, dAfter: TDateTime;
begin
//DateOf: , 00:00:00 ( )
dBefore := StrToDateTime(sDate, FDateFormatSetting);
// TDateTime 1899 12 30 0
// DateOf Trunc
// 1899 12 30 +
// ( TDateTime , )
dAfter := DateOf(dBefore);
//(DateOf)beforeDate:2015-08-10 14:28:28
MMOResult.Lines.Add('(DateOf)beforeDate:' + FormatDateTime('yyyy-MM-dd HH:nn:ss', dBefore));
//(DateOf)afterDate:2015-08-10 00:00:00
MMOResult.Lines.Add('(DateOf)afterDate:' + FormatDateTime('yyyy-MM-dd HH:nn:ss', dAfter));
end;
procedure TFMain.btnTimeOfClick(Sender: TObject);
var
dBefore, dAfter: TDateTime;
begin
//TimeOf: , 1899-12-30
dBefore := StrToDateTime(sDate, FDateFormatSetting);
// ,TimeOf Frac
//
// 24*60*TimeOf , 0 0 0 0
dAfter := TimeOf(dBefore);
// Delphi 1899-12-30
//
//(TimeOf)beforeDate:2015-08-10 14:28:28
MMOResult.Lines.Add('(TimeOf)beforeDate:' + FormatDateTime('yyyy-MM-dd HH:nn:ss', dBefore));
//(TimeOf)afterDate:1899-12-30 14:28:28
MMOResult.Lines.Add('(TimeOf)afterDate:' + FormatDateTime('yyyy-MM-dd HH:nn:ss', dAfter));
end;
procedure TFMain.FormCreate(Sender: TObject);
begin
//
FDateFormatSetting.ShortDateFormat := 'yyyy-MM-dd';
FDateFormatSetting.DateSeparator := '-';
FDateFormatSetting.TimeSeparator := ':';
//FDateFormatSetting.LongTimeFormat:='hh:mm:ss.zzz';
FDateFormatSetting.LongTimeFormat := 'hh:mm:ss';
end;
end.
다음은 위 코드에 사용된 키워드 및 기타 함수에 대한 간단한 설명입니다.
inline: (1) 어떤 함수를 설명할 때 - 응용 프로그램의 성능을 향상시키기 위해 inline으로 함수 과정을 설명할 수 있다. inline으로 성명하는 과정에 대해 컴파일러는 컴파일러를 컴파일할 때 정상적인 프로세스 호출 방식을 대체한다. 대신 이 함수의 컴파일러 코드를 가져와 이 과정을 호출하는 곳으로 생성할 수 있다. 여러 곳에서 함수를 호출하고 호출하는 곳에 함수의 컴파일러 코드를 직접 삽입한다.이런 폐단은 비교적 큰 EXE 파일을 생성할 수 있다.
발췌문: Delphi XE4 inline 사용
(2)
InLine Asm assembler ,
. .
:Delphi
Delphi Inline , , , , .
Trunc(): Trunc(-123.55)=-123과 같은 매개변수의 정수 부분을 반환합니다.
Frac(): Frac(-123.55)=-0.55.와 같은 매개변수의 소수점을 반환합니다.
코드 예
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.