如果在一个字符串中取时间日期?如”www.39.net  2009-7-24  39健康网“的字符串,如何取出字符串”2009-7-24“。这只是其中一种形式,还有如”(04/08 10:49)“,”(2009年04月08日13:54)“,”(03月10日)“,”(04月08日 09:03)“,”04/08 07:28“等,也要能提取出来,希望各位高手赐教,定有高分送上

解决方案 »

  1.   

    如果不要后面的小时分秒,就用Split(' ')
      

  2.   

    通用时间格式的可以用 \d{2,4}[-//]{1}\d{1,2}[-//]{1}\d{1,2} 
    但你列举的格式太多了,
      

  3.   

    用正则表达式呀。。
    正则表达式先提取有可能是时间的字符串,然后用DateTime.TryParse("提取的字符串") 看是否是有效的时间格式顶。。
      

  4.   

    string patterns = @"\d{2,4}-\d{1,2}-\d{1,2}|\d{2,4}年\d{1,2}月\d{1,2}日|(?!=\()\d{1,2}\/\d{1,2} \d{1,2}:\d{1,2}(?=\))"; //慢慢加吧,反正各种样式用分隔符|隔开好了。string str = "www.39.net 2009-7-24 39健康网 1999年1月1日";System.Text.RegularExpressions.MatchCollection mc = System.Text.RegularExpressions.Regex.Matches(str, patterns, System.Text.RegularExpressions.RegexOptions.IgnoreCase);
            
    foreach (System.Text.RegularExpressions.Match m in mc)
          m.Value //得到的日期值。
      

  5.   

    Regex regex=new Regex("[0-9]{4}-(1[0,1,2]|[1-9])-(0[1-9]|[1,2][0-9]|3[0,1])")
    要严密点的话..正则应该挺长的
      

  6.   

    2009-7-24
    Regex regex=new Regex(@"^\d{4}-(1[0,1,2])|[1-9]-([1-9]|[1,2][0-9]|3[0,1])$") 
    04/08 10:49
    Regex regex=new Regex(@"^(1[0,1,2])|[1-9]/([1-9]|[1,2][0-9]|3[0,1]),[0,1]\d|2[1-4]:[0-6]\d%)
    2009年04月08日13:54
    Regex regex=new Regex(@"^\d{4}年(1[0,1,2])|[1-9]月([1-9]|[1,2][0-9]|3[0,1])日,[0,1]\d|2[1-4]:[0-6]\d%)
    03月10日
    Regex regex=new Regex(@"^1[0,1,2])|[1-9]月([1-9]|[1,2][0-9]|3[0,1])日$)
    04月08日 09:03
    Regex regex=new Regex(@"^1[0,1,2])|[1-9]月([1-9]|[1,2][0-9]|3[0,1])日, [0,1]\d|2[1-4]:[0-6]\d$)
    04/08 07:28
      

  7.   

    参考MSDN把各种标准日期型格式各写一个正则,与一下或依次判读。
      

  8.   


    那就要求你给出所有可能的格式string test = "如果在一个字符串中取时间日期?如”www.39.net  2009-7-24  39健康网“的字符串,如何取出字符串”2009-7-24“。这只是其中一种形式,还有如”(04/08 10:49)“,”(2009年04月08日13:54)“,”(03月10日)“,”(04月08日 09:03)“,”04/08 07:28“等,也要能提取出来,希望各位高手赐教,定有高分送上";
    MatchCollection mc = Regex.Matches(test, @"(?:\d{4}[-/.年])?\d{1,2}[-/.月]\d{1,2}日?(\s*(?:[01][0-9]|2[0-3])(?::[0-5][0-9]){1,2})?");
    foreach (Match m in mc)
    {
        richTextBox2.Text += m.Value + "\n";
    }
    //输出
    2009-7-24
    2009-7-24
    04/08 10:49
    2009年04月08日13:54
    03月10日
    04月08日 09:03
    04/08 07:28
      

  9.   

    那和 字符串连接 差不多
    比如 获取 身份证中的 日前:
    string strZgoy="610623 1988 0326 0011";
    string dCstq=strZgoy.SubString(6,4)+"年"+strZgoy.SubString(10,2)+"月"+strZgoy.SubString(12,2)+"日";
    Response.Write(dCstq);
    输出结果:1988年03月26日