从网页中提取时间的类
做房产网站的垂直搜索,大多数网站的网页都是动态的,所以无法从response里面提取last-modified,而房产网页里面都带有时间,但是格式却不尽相同:有2007-10-01,2007年10月1日等等。所以就写了一个类专门提取时间,并把时间提取之后统一存为2007-01-01的格式。
1
public 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
public 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"); //year17
//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));//year34
if (strDate.Substring(nDateStart + 2, 1) != "-") //2006-1035
{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-1039
else stbDate.Append("0" + strDate.Substring(nDateStart + 4, 1));//2006-10-940
}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-1046
else stbDate.Append("0" + strDate.Substring(nDateStart + 3, 1));//2006-9-947
}48

49
}50
//strDate = stbDate.ToString();51
return stbDate.ToString();52
}53

54


浙公网安备 33010602011771号