根据时间日期格式从字符串中解析日期时间

二少爷的宠物

二少爷的宠物

2016-02-19 13:23

关注图老师设计创意栏目可以让大家能更好的了解电脑,知道有关于电脑的更多有趣教程,今天给大家分享根据时间日期格式从字符串中解析日期时间教程,希望对大家能有一点小小的帮助。
根据时间日期格式从字符串中解析日期时间
  function StrToDtFmt(const S, Fmt: String; Dft: TDateTime): TDateTime;
  
  function StrToDtFmt(const S, Fmt: String; Dft: TDateTime): TDateTime;
  var
    Pts: array[1..10] of Integer;
    Wds: array[1..10] of Integer;
    Vls: array[1..10] of Word;
    i, j, n, m, k, d: Integer;
    t: String;
    c: Char;
    dt: TDateTime;
  begin
    // 只处理数字格式的日期和时间
    i := 1;
    n := 1;    
    t := Trim(AnsiUpperCase(Fmt));
    // 解析格式串
    while i = Length(t) do
    begin
      case t[i] of
        'Y': Pts[n] := 1;
        'M': Pts[n] := 2;
        'D': Pts[n] := 3;
        'H': Pts[n] := 4;
        'N': Pts[n] := 5;
        'S': Pts[n] := 6;
        'Z': Pts[n] := 7;
        else
        begin
          i := i + 1;
          Continue;
        end;
      end;
      c := t[i];
      i := i + 1;
      m := 1;
      while t[i] = c do
      begin
        Inc(i);
        Inc(m);
      end;
      if t[i] in ['Y','M','D','H','N','S','Z'] then
        Wds[n] := m
      else
        Wds[n] := 0;
      n := n + 1;
      if n 7 then Break;
    end;
    n := n - 1;
    // 开始转化
    Result := Dft;
    if Length(S) = 0 then Exit;
    DecodeDate(Result, Vls[1], Vls[2], Vls[3]);
    DecodeTime(Result, Vls[4], Vls[5], Vls[6], Vls[7]);
    m := 1;
    i := 1;
    k := Length(S);
    while m = n do
    begin
      while not (S[i] in ['0'..'9', #0]) do Inc(i);
      if i k then Break;
      d := 0;
      j := i;
      while (S[i] in ['0'..'9']) and
        ((Wds[m] = 0) or (i - j Wds[m])) do
      begin
        d := d * 10 + Ord(S[i]) - Ord('0');
        i := i + 1;
      end;
      Vls[Pts[m]] := d;
      if i k then Break;
      m := m + 1;
    end;
    if TryEncodeDate(Vls[1], Vls[2], Vls[3], dt) then
      Result := Int(dt) + Frac(Result);
    if TryEncodeTime(Vls[4], Vls[5], Vls[6], Vls[7], dt) then
      Result := Int(Result) + Frac(dt);
  end;
展开更多 50%)
分享

猜你喜欢

根据时间日期格式从字符串中解析日期时间

编程语言 网络编程
根据时间日期格式从字符串中解析日期时间

SQL中也可以用格式字符串定制日期转字符串

编程语言 网络编程
SQL中也可以用格式字符串定制日期转字符串

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

java中字符串与日期的转换实例

编程语言 网络编程
java中字符串与日期的转换实例

字符串格式定义

电脑入门
字符串格式定义

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

解析android中系统日期时间的获取

编程语言 网络编程
解析android中系统日期时间的获取

怎么在Excel 2007中单元格键入时间日期

excel
怎么在Excel 2007中单元格键入时间日期

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

网页页面中图像格式的选用

网页页面中图像格式的选用

TomCat下如何对虚拟目录进行配置?

TomCat下如何对虚拟目录进行配置?
下拉加载更多内容 ↓