怎样判定一个字符串符合yymmddmmhh?也就是说:如果将一个字符串转为日期型,他不满足yymmddmmhh也是非法的!用什么方法来判定呢?谢谢

解决方案 »

  1.   

    那你就当它是那个格式,然后用Copy函数分离,然后组合,然后用TryStrToDateTime看看返回值为true还是false
      

  2.   

    呵呵,上次谢谢你给我解答问题,给了你50分。这次在帮帮我吧,再给你分。0603311445我怎么判断这个字符是yymmddhhmm格式,而不是yyyymmddhh格式?谢谢!
      

  3.   

    我前面不是说了吗?你就当它是后者,也就是yyyymmddhh,用TryStrToDateTime试试不过,有yyyymmddhh这样的时间格式吗?没有分只有小时?
      

  4.   

    我只是举个例子,目的是说明只有yymmddhhmm格式是合法的
      

  5.   

    用TryStrToDateTime的话怎么区分yymmddhhmm和ddmmyyhhmm?
      

  6.   

    这样啊如果全部是1的话两者都有可能啊procedure TForm1.Button1Click(Sender: TObject);
    var
      s: string;
      d: TDateTime;
    begin
      s := '0603311445';
      if TryStrToDateTime(Copy(s, 1, 2)+'-'+Copy(s, 3, 2)+'-'+Copy(s, 5, 2)+' '+Copy(s, 7, 2)+':'+Copy(s, 9, 2), d) then ShowMessage('是yymmddhhmm格式'+#13+#10+DateTimeToStr(d));
      if TryStrToDateTime(Copy(s, 1, 4)+'-'+Copy(s, 5, 2)+'-'+Copy(s, 7, 2)+' '+Copy(s, 9, 2), d) then ShowMessage('是yyyymmddhh格式'+#13+#10+DateTimeToStr(d));
    end;
      

  7.   

    我是从报文里取的日期数据,这个数据的格式必须要求是yymmddhhmm的,其他格式的都要求报错的。
      

  8.   

    function TryStrToDate(const S: string; out Value: TDateTime): Boolean;
    var
      Pos: Integer;
    begin
      Pos := 1;
      Result := ScanDate(S, Pos, Value) and (Pos > Length(S));
    end;有没有你自己不知道吗?按F1或者用Ctrl+鼠标左键
      

  9.   


    不是让你把TryStrToDate拷贝过去,你直接使用TryStrToDate就可以了!!!
      

  10.   

    是啊,我全考过去了.可是他告诉我scandate没定义.
      

  11.   

    真的没有语言了让你别拷啊,你在你的程序里面直接用TryStrToDate,就像TryStrToDateTime一样!!!
      

  12.   

    哦,我太傻了.只是没查到TryStrToDate,我再试试