从网页中提取时间的类
做房产网站的垂直搜索,大多数网站的网页都是动态的,所以无法从response里面提取last-modified,而房产网页里面都带有时间,但是格式却不尽相同:有2007-10-01,2007年10月1日等等。所以就写了一个类专门提取时间,并把时间提取之后统一存为2007-01-01的格式。
1public string GetPubdate()
2 {
3 int nDateStart;
4 String strDate;
5 StringBuilder stbDate = new StringBuilder();
6 nDateStart = m_strContent.IndexOf(m_strSitecode[4]);
7 //nDateStart是时间界定符比如2007-10-01,2007年10月1日其中“-”、“年”、“月”就是时间界定符
8 if (nDateStart <= 0) return null;
9 strDate = m_strContent.Substring(nDateStart, 17);
10 if (m_strSitecode[5] == "月")
11 {
12 nDateStart = strDate.IndexOf(m_strSitecode[5]);
13 if (nDateStart <= 0) return null;
14 if (strDate.IndexOf("年") > 0) //2006年10月,2006年09月
15 stbDate.Append(strDate.Substring(strDate.IndexOf("年") - 4, 4));
16 else stbDate.Append("2006"); //year
17 //stbDate.Append(strDate.Substring(nDateStart - 2, 2));
18 //stbDate.Append(strDate.Substring(nDateStart + 1, 2));
19
20 if (true == IsNumeric(strDate.Substring(nDateStart - 2, 1))) //10月,09月
21 stbDate.Append(strDate.Substring(nDateStart - 2, 2));
22 else stbDate.Append("0" + strDate.Substring(nDateStart - 1, 1)); //9月
23
24 if (true == IsNumeric(strDate.Substring(nDateStart + 2, 1))) //10月10日,10月09日
25 stbDate.Append(strDate.Substring(nDateStart + 1, 2));
26 else stbDate.Append("0" + strDate.Substring(nDateStart + 1, 1));//10月9日
27 }
28 else if (m_strSitecode[5] == "-")
29 {
30 nDateStart = strDate.IndexOf(m_strSitecode[5]);
31 if (nDateStart <= 0) return null;
32 //stbDate.Append("2006");
33 stbDate.Append(strDate.Substring(nDateStart - 4, 4));//year
34 if (strDate.Substring(nDateStart + 2, 1) != "-") //2006-10
35 {
36 stbDate.Append(strDate.Substring(nDateStart + 1, 2));
37 if (true == IsNumeric(strDate.Substring(nDateStart + 5, 1)))
38 stbDate.Append(strDate.Substring(nDateStart + 4, 2));//2006-10-10
39 else stbDate.Append("0" + strDate.Substring(nDateStart + 4, 1));//2006-10-9
40 }
41 else //2006-9-
42 {
43 stbDate.Append("0" + strDate.Substring(nDateStart + 1, 1));
44 if (true == IsNumeric(strDate.Substring(nDateStart + 4, 1)))
45 stbDate.Append(strDate.Substring(nDateStart + 3, 2));//2006-9-10
46 else stbDate.Append("0" + strDate.Substring(nDateStart + 3, 1));//2006-9-9
47 }
48
49 }
50 //strDate = stbDate.ToString();
51 return stbDate.ToString();
52 }
53
54
2 {
3 int nDateStart;
4 String strDate;
5 StringBuilder stbDate = new StringBuilder();
6 nDateStart = m_strContent.IndexOf(m_strSitecode[4]);
7 //nDateStart是时间界定符比如2007-10-01,2007年10月1日其中“-”、“年”、“月”就是时间界定符
8 if (nDateStart <= 0) return null;
9 strDate = m_strContent.Substring(nDateStart, 17);
10 if (m_strSitecode[5] == "月")
11 {
12 nDateStart = strDate.IndexOf(m_strSitecode[5]);
13 if (nDateStart <= 0) return null;
14 if (strDate.IndexOf("年") > 0) //2006年10月,2006年09月
15 stbDate.Append(strDate.Substring(strDate.IndexOf("年") - 4, 4));
16 else stbDate.Append("2006"); //year
17 //stbDate.Append(strDate.Substring(nDateStart - 2, 2));
18 //stbDate.Append(strDate.Substring(nDateStart + 1, 2));
19
20 if (true == IsNumeric(strDate.Substring(nDateStart - 2, 1))) //10月,09月
21 stbDate.Append(strDate.Substring(nDateStart - 2, 2));
22 else stbDate.Append("0" + strDate.Substring(nDateStart - 1, 1)); //9月
23
24 if (true == IsNumeric(strDate.Substring(nDateStart + 2, 1))) //10月10日,10月09日
25 stbDate.Append(strDate.Substring(nDateStart + 1, 2));
26 else stbDate.Append("0" + strDate.Substring(nDateStart + 1, 1));//10月9日
27 }
28 else if (m_strSitecode[5] == "-")
29 {
30 nDateStart = strDate.IndexOf(m_strSitecode[5]);
31 if (nDateStart <= 0) return null;
32 //stbDate.Append("2006");
33 stbDate.Append(strDate.Substring(nDateStart - 4, 4));//year
34 if (strDate.Substring(nDateStart + 2, 1) != "-") //2006-10
35 {
36 stbDate.Append(strDate.Substring(nDateStart + 1, 2));
37 if (true == IsNumeric(strDate.Substring(nDateStart + 5, 1)))
38 stbDate.Append(strDate.Substring(nDateStart + 4, 2));//2006-10-10
39 else stbDate.Append("0" + strDate.Substring(nDateStart + 4, 1));//2006-10-9
40 }
41 else //2006-9-
42 {
43 stbDate.Append("0" + strDate.Substring(nDateStart + 1, 1));
44 if (true == IsNumeric(strDate.Substring(nDateStart + 4, 1)))
45 stbDate.Append(strDate.Substring(nDateStart + 3, 2));//2006-9-10
46 else stbDate.Append("0" + strDate.Substring(nDateStart + 3, 1));//2006-9-9
47 }
48
49 }
50 //strDate = stbDate.ToString();
51 return stbDate.ToString();
52 }
53
54