亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? myldbdateformat.pas

?? 一個(gè)本地database引擎,支持中文T_Sql查詢(xún),兼容DELPHI標(biāo)準(zhǔn)數(shù)據(jù)庫(kù)控件
?? PAS
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
unit MYLDBDateFormat;

{$I MYLDBVer.inc}

//Example:  "Today is" mm/dd/yyyy hh24:nn:ss ' Wow !!!'

interface
uses SysUtils, math, windows,
     MYLDBExcept,
     MYLDBTypes,
     MYLDBConst;

Type
    TDateFormatType  = ( dfYYYY, dfYY, dfYEAR,                        // year
                         dfQ,                                         // quarter
                         dfMONTH, dfMON, dfMM, dfM, dfRM,             // month
                         dfDDD, dfDD, dfDAY, dfDY, dfDW, dfD,         // days
                         dfHH12, dfHH24, dfHH, dfH12, dfH24, dfH,     // huors
                         dfNN, dfN,                                   // minutes
                         dfSS, dfS,                                   // seconds
                         dfAMPM,                                      // am/pm
                         dfText);
const
    DateFormatReservedWordsCount = 26;
    DateFormatReservedWords: array[0..DateFormatReservedWordsCount-1] of String = (
                         'YYYY', 'YY', 'YEAR',
                         'Q',
                         'MONTH', 'MON', 'MM', 'M', 'RM',
                         'DDD', 'DD', 'DAY', 'DY', 'DW', 'D',
                         'HH12', 'HH24', 'HH', 'H12', 'H24', 'H',
                         'NN', 'N',
                         'SS', 'S',
                         'AMPM');

    Delimeters = '-/,.;:';

    TwoDigitYearCenturyWindow = 1930; // 1930 - 2029
var
   DateFormatReservedWordsMaxLength: integer;
Type

  TDateFormatToken = record
    TokenType: TDateFormatType;
    Text:      String;
  end;

  TDateFormater = class
  private
   FDateFormat: array of TDateFormatToken;
   procedure ParseDateFormat(const DateFormatStr: string);
   function GetReservedWord(const Text: string): TDateFormatType;
  public
   constructor Create(DateFormat: string);
   destructor Destroy; override;

   function ToDate(str: String): TDateTime;
   function ToString(dt: TDateTime): String;
   function GetStringMaxSize: Integer;
   function GetDataType: TMYLDBAdvancedFieldType;
   function DebugGetTotenList: String;
  end;

implementation

const
  AM = 'AM';
  PM = 'PM';

// DateUtils Functions...

function YearOf(const AValue: TDateTime): Word;
var
  LMonth, LDay: Word;
begin
  DecodeDate(AValue, Result, LMonth, LDay);
end;

function StartOfTheYear(const AValue: TDateTime): TDateTime;
begin
  Result := EncodeDate(YearOf(AValue), 1, 1);
end;

function DayOfTheYear(const AValue: TDateTime): Word;
begin
  Result := Trunc(AValue - StartOfTheYear(AValue)) + 1;
end;

function MonthOf(const AValue: TDateTime): Word;
var
  LYear, LDay: Word;
begin
  DecodeDate(AValue, LYear, Result, LDay);
end;

function DayOfTheWeek(const AValue: TDateTime): Word;
begin
  Result := (DateTimeToTimeStamp(AValue).Date - 1) mod 7 + 1;
end;

function HourOf(const AValue: TDateTime): Word;
var
  LMinute, LSecond, LMilliSecond: Word;
begin
  DecodeTime(AValue, Result, LMinute, LSecond, LMilliSecond);
end;

function HourOfTheDay(const AValue: TDateTime): Word;
begin
  Result := HourOf(AValue);
end;

{ TDateFormater }

constructor TDateFormater.Create(DateFormat: string);
begin
  SetLength(FDateFormat,0);
  ParseDateFormat(DateFormat);
end;

destructor TDateFormater.Destroy;
begin

  inherited;
end;

procedure TDateFormater.ParseDateFormat(const DateFormatStr: string);
var
  i,j,L: integer;
  start: integer;
  s: string;
  dft: TDateFormatType;
  charsLen: integer;
  isQuotedText: boolean;
  isDoubleQuotedText: boolean;
begin
 i := 0;
 start := 1;
 isQuotedText := false;
 isDoubleQuotedText := false;
 L := Length(DateFormatStr);
 while i < L do
  begin
   inc(i);
   // Quoted Text...
   if (DateFormatStr[i] = '''') or (DateFormatStr[i] = '"') then
    if isQuotedText or isDoubleQuotedText then
     begin
      if (DateFormatStr[i] = '''') and isQuotedText or
         (DateFormatStr[i] = '"') and isDoubleQuotedText then
       begin
        // Close QuotedText or DoubleQuotedText
        SetLength(FDateFormat, Length(FDateFormat)+1);
        FDateFormat[Length(FDateFormat)-1].TokenType := dfText;
        FDateFormat[Length(FDateFormat)-1].text :=
          copy(DateFormatStr, start, i-start);
        if DateFormatStr[i] = '"' then
          isDoubleQuotedText := false
        else
          isQuotedText := false;
        start := i + 1;
        continue;
       end
     end
    else
     begin
      if start <> i then
       begin
        // close previous Section 'Text'
        SetLength(FDateFormat, Length(FDateFormat)+1);
        FDateFormat[Length(FDateFormat)-1].TokenType := dfText;
        FDateFormat[Length(FDateFormat)-1].text :=
          copy(DateFormatStr, start, i-start);
       end;

      start := i + 1;
      if DateFormatStr[i] = '"' then
        isDoubleQuotedText := true
      else
        isQuotedText := true;
      continue;
     end;
   if isQuotedText or isDoubleQuotedText then continue;

   // look on 4-5 next chars
   charsLen := min(DateFormatReservedWordsMaxLength,L+1-i);
   for j:=charsLen downto 1 do
    begin
     s := copy(DateFormatStr, i, j);
     dft := GetReservedWord(s);
     // Is it Reserded word ?
     if dft <> dfText then
      begin
       if i <> start then
        begin
         SetLength(FDateFormat, Length(FDateFormat)+1);
         FDateFormat[Length(FDateFormat)-1].TokenType := dfText;
         FDateFormat[Length(FDateFormat)-1].text :=
           copy(DateFormatStr, start, i-start);
        end;
       SetLength(FDateFormat, Length(FDateFormat)+1);
       FDateFormat[Length(FDateFormat)-1].TokenType := dft;
       FDateFormat[Length(FDateFormat)-1].text :=
         copy(DateFormatStr, i, j);
       i := i + j - 1;
       start := i + 1;
       break;
      end;
    end;//for
  end;
 if i+1 <> start then
  begin
   SetLength(FDateFormat, Length(FDateFormat)+1);
   FDateFormat[Length(FDateFormat)-1].TokenType := dfText;
   FDateFormat[Length(FDateFormat)-1].text :=
     copy(DateFormatStr, start, i+1-start);
  end;
end;

function TDateFormater.GetReservedWord(const Text: string): TDateFormatType;
var i,n: integer;
    s: string;
begin
 n := DateFormatReservedWordsCount;
 s := UpperCase(Text);
 for i := 0 to DateFormatReservedWordsCount-1 do
   if (s = DateFormatReservedWords[i]) then
    begin
     n := i;
     break;
    end;
 Result := TDateFormatType(n);
end;

function TDateFormater.DebugGetTotenList: String;
var
 i: Integer;
begin
 Result := '';
 for i:=0 to Length(FDateFormat)-1 do
  begin
    Result := Result + IntToStr(i+1);
    if FDateFormat[i].TokenType = dfText then
      Result := Result + ' <dfText> = '''
    else
      Result := Result + ' <df' +
            DateFormatReservedWords[integer(FDateFormat[i].TokenType)] + '> = ''';
    Result := Result + FDateFormat[i].Text + ''''#13#10;
  end;
end;


function TDateFormater.ToDate(str: String): TDateTime;
var
 y,m,d, h,mi,s: word;
 i, start: Integer;
begin
 y:=0; m:=0; d:=0;
 h:=0; mi:=0; s:=0;
 // Firct char
 start := 1;
  for i:=0 to Length(FDateFormat)-1 do
  begin
   case FDateFormat[i].TokenType of
     dfYYYY,
     dfYEAR:   begin
                y := StrToInt(copy(str,start,4));
                Inc(Start,4);
               end;
     dfYY:     begin
                y := StrToInt(copy(str,start,2));
                Inc(Start,2);
                if y < (TwoDigitYearCenturyWindow mod 100) then
                  y := y + 100;
                y := y + (TwoDigitYearCenturyWindow div 100) * 100; // + 1900
               end;

     dfQ:      begin
                m := (StrToInt(copy(str,start,1))-1)*3;
                Inc(Start,1);
               end;

     {dfMONTH:  begin
                m := (StrToInt(copy(str,start,1))-1)*3;
                Inc(Start,1);
                m:=StrToDateTime
               end;}
     //dfMON:    s := FormatDateTime('mmm',dt);
     dfMM:     begin
                m := StrToInt(copy(str,start,2));
                Inc(Start,2);
               end;
     dfM:      begin
                if str[start+1] in ['0'..'9'] then
                 begin
                  m := StrToInt(copy(str,start,2));
                  Inc(Start,2);
                 end
                else
                 begin
                  m := StrToInt(copy(str,start,1));
                  Inc(Start,1);
                 end
               end;
     {dfRM:     case MonthOf(dt) of
                01: s := 'I';
                02: s := 'II';
                03: s := 'III';

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一二区视频| 亚洲欧美在线视频| wwwwww.欧美系列| 欧美一区二区观看视频| 日韩视频一区在线观看| 欧美日韩国产综合一区二区| 欧美系列一区二区| 精品成人在线观看| 欧美va天堂va视频va在线| 国产日韩三级在线| 亚洲乱码国产乱码精品精小说| 亚洲国产乱码最新视频| 一区二区高清在线| 精东粉嫩av免费一区二区三区| 日韩国产高清在线| 成人av资源在线| 色婷婷综合久久久久中文一区二区| 欧美日韩国产另类一区| 久久久www成人免费毛片麻豆| 成人免费视频在线观看| 日本视频免费一区| av午夜一区麻豆| 日韩视频中午一区| 欧美一区二区三区性视频| av不卡一区二区三区| 欧美精品aⅴ在线视频| 国产精品视频一区二区三区不卡| 亚洲福利国产精品| 色噜噜狠狠成人网p站| 国产日韩精品视频一区| 日韩在线一区二区| 精品视频在线免费观看| 蜜桃av一区二区三区电影| 成人丝袜高跟foot| 久久亚洲捆绑美女| 日韩精品一级中文字幕精品视频免费观看 | 国产精品久久久爽爽爽麻豆色哟哟| 日韩亚洲欧美成人一区| 国产亚洲精品资源在线26u| 欧美精品一区二区蜜臀亚洲| 日韩欧美另类在线| 国产精品萝li| 日韩avvvv在线播放| 色综合色狠狠综合色| 91精品国产麻豆国产自产在线| 亚洲综合色在线| 91免费国产视频网站| 国产精品欧美一级免费| 国产乱人伦精品一区二区在线观看| 欧美一区二区三区小说| 亚洲.国产.中文慕字在线| 色婷婷狠狠综合| 亚洲午夜久久久久久久久电影网 | 亚洲一二三专区| 欧美日韩午夜影院| 视频一区二区欧美| 日韩久久精品一区| 国产精品456| 日韩理论片中文av| 欧美日韩卡一卡二| 韩国精品一区二区| 中文字幕乱码一区二区免费| 国产一区二区三区在线观看免费| 欧美本精品男人aⅴ天堂| 国内成人免费视频| 国产精品久久久久影院| av在线播放成人| 亚洲无线码一区二区三区| 欧美日韩国产色站一区二区三区| 亚洲一区二区美女| 日本韩国精品一区二区在线观看| 亚洲精品乱码久久久久| 8x8x8国产精品| 高清在线成人网| 午夜精品aaa| 中国av一区二区三区| 欧美日韩国产大片| 成人黄色一级视频| 狠狠色丁香久久婷婷综合丁香| 久久久综合激的五月天| 日本福利一区二区| 国产精品亚洲专一区二区三区 | 粉嫩一区二区三区在线看| 亚洲一区二区精品视频| 精品国产一区二区三区四区四 | 一区二区视频免费在线观看| 国产亚洲一区二区三区四区| 欧美久久婷婷综合色| 91毛片在线观看| 丁香一区二区三区| 日韩电影在线一区| 亚洲电影在线免费观看| 亚洲图片欧美激情| 日本一区二区三区高清不卡| 欧美成va人片在线观看| 欧美另类久久久品| 91久久国产综合久久| 粉嫩av一区二区三区粉嫩| 免费成人你懂的| 免费观看日韩av| 免费成人在线影院| 日本在线不卡视频一二三区| 婷婷综合五月天| 麻豆91小视频| 国产一区二区精品久久91| 国产一区日韩二区欧美三区| 理论电影国产精品| 国产综合一区二区| 成人国产一区二区三区精品| av在线不卡网| 欧美日韩中文国产| 日韩视频在线观看一区二区| 久久久精品日韩欧美| 亚洲人一二三区| 日本亚洲视频在线| 国产麻豆日韩欧美久久| 99久久精品免费精品国产| 在线免费av一区| 亚洲视频每日更新| 无码av中文一区二区三区桃花岛| 日本中文一区二区三区| 国产一区在线不卡| 日本韩国欧美一区二区三区| 欧美美女网站色| 中文字幕一区二区三区在线不卡 | 成人天堂资源www在线| 欧美色视频在线| 国产色产综合色产在线视频| 亚洲一区二区三区四区五区黄| 狠狠色丁香久久婷婷综| 欧美最猛性xxxxx直播| 精品成人免费观看| 国产精品国产三级国产aⅴ原创| 亚洲男人都懂的| 狠狠色2019综合网| 欧美日韩国产色站一区二区三区| 精品国产1区2区3区| 亚洲成av人片一区二区三区| 国产精品羞羞答答xxdd| 欧美日韩1区2区| 中文字幕亚洲在| 韩国av一区二区| 欧美影院午夜播放| 亚洲激情自拍视频| 成人三级伦理片| 精品少妇一区二区三区在线播放| 亚洲国产精品天堂| 9人人澡人人爽人人精品| 中文字幕欧美日本乱码一线二线| 毛片av中文字幕一区二区| 欧美精品18+| 奇米888四色在线精品| 欧美日韩免费一区二区三区视频| 亚洲免费成人av| 日本道精品一区二区三区| 1区2区3区欧美| 色94色欧美sute亚洲线路一ni| 一色桃子久久精品亚洲| av在线播放一区二区三区| 国产精品亲子乱子伦xxxx裸| 成人av资源下载| 亚洲视频一区在线观看| 99久久er热在这里只有精品15| 国产精品久久久久久久浪潮网站 | 亚洲精品在线三区| 国产精品91一区二区| 国产精品免费av| 在线观看av不卡| 亚洲丶国产丶欧美一区二区三区| 色综合中文字幕国产 | 精品国产免费人成电影在线观看四季 | 欧美精品在线视频| 日韩**一区毛片| 久久综合丝袜日本网| 色综合久久天天综合网| 日韩高清一区二区| 26uuu精品一区二区| 国产成人免费视频网站| 樱桃视频在线观看一区| 欧美成人官网二区| 97久久精品人人爽人人爽蜜臀| 亚洲国产精品一区二区www在线| 精品国精品国产| 欧美日韩电影一区| 国产一区在线看| 天涯成人国产亚洲精品一区av| 国产三级三级三级精品8ⅰ区| www.亚洲在线| 视频一区免费在线观看| 国产区在线观看成人精品| 欧美亚洲图片小说| 国产精品夜夜嗨| 久草精品在线观看| 亚洲国产日产av| 国产精品传媒视频| 欧美tickling挠脚心丨vk| 一本一本大道香蕉久在线精品| 国产麻豆日韩欧美久久| 久久精品久久久精品美女| 亚洲一区二区三区三|